本館2Dシューティングのホーミング機能について3

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
LisetteLander

本館2Dシューティングのホーミング機能について3

#1

投稿記事 by LisetteLander » 14年前

http://dixq.net/forum/viewtopic.php?f=3 ... %B0#p59602
↑こちらで質問した内容の続きとなります。

コード:

}else{//no_shift
			
				l_a = (2*PI)/(300);				//一定の角度(曲がる)
				l_b = atan2(y,x) - cshot[k].angle;	//敵への角度-弾の角度
			if(CheckStatePad(configpad.swch)==1){//スイッチボタンが押されたら敵に射出
				cshot[k].spd=20;
			}else{
				
				if(cos(l_b) > cos(l_a)){			//もしも「弾の進行方向と敵への角度の差」が「曲がる角度」より大きかったら
				cshot[k].angle=atan2(y,x);		//敵への角度を弾の角度へ代入 
				}else if(sin(l_b)>0){				//弾の正面ではなく右寄りならば
					cshot[k].angle += l_a;			//弾の角度に左向きに修正(angleに一定値を足す)
				}else if(sin(l_b)<0){				//弾の正面ではなく左寄りならば
					cshot[k].angle -= l_a;			//弾の角度に右向きに修正(angleから一定値を引く)
				}else{								//弾が正面ならば引き続き誘導
				cshot[k].angle=atan2(y,x);
				}	//敵がいてシフトを押していなく、スイッチを押されてないときのいときのオプションの弾
			}
		}
敵に向かって誘導する弾を、C(swch)を押すとSPDの値が20に大きくなる。というプログラムです。
敵に向かって弾がゆっくり誘導し、Cを押すとスパーンと敵に命中するのですが
「敵に向かってゆっくり誘導」を「敵の周囲をサテライト旋回する弾」にしたいのですが、どうすればいいのでしょうか?
cshot[k].angle -= l_a;とcshot[k].angle += l_a;にPI/2を足したり引いたりすることで敵に対して水平に弾が回るということを実現したかったのですが弾が半透明になり高速でブレている状態になりました。
最終的にCを押すと回転方向から敵の方向を導き出し、直角に曲がる弾にしたいです。

また、ソースに「これいらないんじゃない?」という部分がありましたら指摘お願いします。

コード:

コード:


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