敵の画像を常に回転させる方法について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
samusu0905
記事: 336
登録日時: 5年前

敵の画像を常に回転させる方法について

#1

投稿記事 by samusu0905 » 5年前

この件名に心当たりがある人もいるかと思います。先週自分が大体同じ件名で質問を投げかけました。
解決と思っていた回転処理なんですが、あの後色々と試しました。ですが、敵の画像の角度を斜めに傾ける
くらいしかできませんでした。敵が発生したときに、敵の画像が360°に傾いたままで、回転しなかったです。
念のためコードを提示します。

コード:

//敵2の発生------------------------------------------------------------------------------------
void Enemy2Set(void)
{
	int i;
	float rotate=0;
	gEnemy2rotateTimer++;

	//敵2の数をループ
	for(i=0; i<ENEMY2_MAX; i++)
	{
		//敵2が存在しなければ
		if( gEnemy2[i].flg == OFF)
		{
			Enemy2SetOne(i, rotate);						//敵2の発生の実施を行う
		}
	}


	//敵2の回転をループさせる
	for( rotate=0;  rotate < gEnemy2rotateTimer; rotate++)
	{
		if( gEnemy2[i].flg == OFF)
		{
			Enemy2SetOne(i,rotate);
		}
	}
}


//敵2の発生の実施-------------------------------------------------------------------------------
void Enemy2SetOne(int i, float rotate)
{
	//1/300の確率
	if(rand()%300 == 0)
	{
		gEnemy2[i].flg = ON;						//敵2が存在している
		gEnemy2[i].x = (float)(rand()%1010);		//敵2のX座標をランダムに設定
		gEnemy2[i].y = -200;						//敵2のY座標をランダムに設定
		gEnemy2[i].w = 60;							//敵2の幅
		gEnemy2[i].h = 58;							//敵2の高さ
		gEnemy2[i].tw = 60;							//敵2先の幅
		gEnemy2[i].th = 60;							//敵2先の高さ
		if( gEnemy2[i].flg == ON)
		{
			gEnemy2[i].rotate = 360;
		}
	}

	
	//1/5の確率
	if(rand()%3 == 0)
	{
		gEnemy2[i].dir = 4;							//右向き
	}
	else
	{
		gEnemy2[i].dir = -4;						//左向き
	}

	if( gScore >= 1500)
	{
		gEnemy2[i].type = TYPE2;
	}
	else
	{
		gEnemy2[i].flg = OFF;
	}
}
疑問点や書き直すところがあればお願いします。
画像の角度を変えて傾けることはできました。
ただ、その後にfor文を使ったりして色々と試したりしましたが、うまくいきませんでした。

やりたいことはあまり変わらないのですが、
「まずrotate変数を0に初期化。そしてゲームプレイに移動後、敵が発生したら回転タイマーを加算して、タイマーがrotate変数より大きければ敵の画像を回転させる。タイマーが100になった時に0に戻してまた回転させる。」と言った処理を行いたかったのですが、うまくいきませんでした。for文を使用すれば無限に左回りしてくれると思ったんですが・・。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: 敵の画像を常に回転させる方法について

#2

投稿記事 by みけCAT » 5年前

まず「for文を使用している⇒無限に左回りしてくれる」という命題は偽です。

このコードを見ると、
・20~26行目:Timerと書かれた変数を用いて1フレームでループをしているのは不自然である
・Enemy2SetOne関数:引数のrotateが処理に使用されていない
・肝心の(?)描画処理のコードが見当たらない
という点が気になりました。

また、「敵の画像が360°に傾く」という現象の意味がよくわからないです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

samusu0905
記事: 336
登録日時: 5年前

Re: 敵の画像を常に回転させる方法について

#3

投稿記事 by samusu0905 » 5年前

すみませんでした。 またよくわからない説明をしてしまって。
「敵の画像が360°に傾く」ということについてですが、簡単に言うと敵の画像が角度を変えたままで回転せずに動いているということです。

後、for文ですが。あれって数を複数に表示させてループさせているだけですよね?
回転処理に関して言うとfor文は関係なかったですか?
僕のプログラムを少し書き直ししてもらえませんか?
お願いします。

アバター
Tatu
記事: 440
登録日時: 8年前
住所: 北海道

Re: 敵の画像を常に回転させる方法について

#4

投稿記事 by Tatu » 5年前

敵の画像を常に移動させる方法についてはわかっていますか?
それがわかっているなら回転についてもどの変数をいつ変えればいいのかわかると思います。

N.R

Re: 敵の画像を常に回転させる方法について

#5

投稿記事 by N.R » 5年前

前にも突っ込みはあったと思いますが
360回転しているというのは要するに全く回転していないと受け取ってよいのですか

とにかく状況の説明ができていないので
一度ライブラリを含むプロジェクトを全てアップしてもらった方がいいですね
今後のやり取りも少しは円滑になるかもしれません

公開禁止というのであれば禁止している人からドキュメントをもらえるか質問ができると思います

samusu0905
記事: 336
登録日時: 5年前

Re: 敵の画像を常に回転させる方法について

#6

投稿記事 by samusu0905 » 5年前

Tatuさん>>回答有難うございます。
常に移動させる方法はわかります。その方法を利用すればいいわけですね?
教えていただき有難うございます。


N.Rさん>>回答有難うございます。
そうですね。360回転なら全く動かないという事になりますね。
後、ライブラリィを含むプロジェクトですか?
全てアップって書いてありますが、どういうことですか?
コードを提示するみたいにすればいいんですか?
教えてください。
公開禁止ではないので大丈夫ですよ。

samusu0905
記事: 336
登録日時: 5年前

Re: 敵の画像を常に回転させる方法について

#7

投稿記事 by samusu0905 » 5年前

Tatuさん>>今移動処理のところに回転する変数を使って試したら回転しました。
有難うございます。解決しました。

N.Rさんも色々と教えていただき有難うございました。N.Rさんが突っ込みどころを言ってくださったおかげで
理解しました。敵の発生処理のところで回転処理をやっても無駄であることに気づきました。
そこでTatuさんに「敵を常に移動できるなら回転処理もできるはず」という事を書いてくれたので、移動処理の
ところに回転する変数を使って処理を実行したらできました。
有難うございました。

N.R

Re: 敵の画像を常に回転させる方法について

#8

投稿記事 by N.R » 5年前

>全てアップって書いてありますが、どういうことですか?
他の人も実行して確認ができるようにするという事ですね

ソリューション以下のフォルダをzipに圧縮するなどして
アップロードサイトを使うか、掲示板に添付するか
方法はいくつかありますが
アップロードや添付は私自身やった事がないので解説は詳しい人にお任せしますが

今回のは分かりませんが過去の質問はそれができていればかなり早かったと思います
今後も質問をする予定なら知っておいた方がよいですね

samusu0905
記事: 336
登録日時: 5年前

Re: 敵の画像を常に回転させる方法について

#9

投稿記事 by samusu0905 » 5年前

わかりました。色々と教えていただき有難うございます。

閉鎖

“C言語何でも質問掲示板” へ戻る