1MAP_STG ver.0.010 敵弾と防衛衛星を実装


2021年 6月 27日
 
 
 ver.0.010は敵弾と、それを防衛する防衛衛星を実装してみたいと思う。


 
 

1、敵弾

 難しい事は無く、敵1からランダムに自機に向かって発射される。

 
 
2、防衛衛星

 結構むずかしかった。

 敵弾が自機の防衛範囲内になると、敵弾を追尾して消してくれる。

 防衛衛星には耐久度があって、一定数敵弾を消すと無くなる。

 出現要件は要塞を倒す事。
 
 
 モード 1は自機の周りを所定軌道で回る、待機モード。

 軌道は、ずっと円周を動き続ける基準 radに、円を衛星数で割った値を、各衛星円周点分足し算する。

 つまり円 1周が 6.28(3.14の倍)になってるので、基準軌道点に、衛星 2個なら 3.14を、3個なら 2.9を衛星の No.分足す。

 
 
 モード 2は敵弾を追尾するモード。

 まず弾の移動処理時に自機との距離を格納しておきます。

gdtln(tn)=(hx*hx)+(hy*hy) ; 直線距離

 この時に敵弾が防衛衛星の迎撃距離内ならフラグ gdtf(tn)を 1にします。

 if gdtln(tn)>gdrln*gdrln : break ; 射程外
 if gdtf(tn)=2 : break ; 既に防衛衛星の標的
 gdtf(tn)=1 ; 防衛射程内フラグ

 フラグ 2は既に防衛衛星の標的になってる状態です。

 このフラグは弾の持つデータです。
 
 
 自機と弾との距離の近い順の順列を作ります。

 gdtp(c)がその順列です。
 
 
 順列を基に防衛衛星の標的をセットします。

 この時に標的の弾に一番近い衛星を選びます。

 gdtar(gdn1)が、その衛星が追跡する弾のNo.です。

 gdf(gdn1)は衛星のモードフラグで、0=衛星が無い、1=軌道周回モード、2=敵弾追跡モードです。

 gdtf(tn)は弾の持つデータです。

 
 
 色々ややこしいのですけど、フラグ管理が煩雑で、弾や衛星が消滅した時にフラグをきちんとリセットしないと挙動がおかしくなります。
 
 
3、自機に耐久度を設定する

 

 敵弾に一発当たっただけでは難しいので、自機に HPを設ける。
 
 
 弾が当たるとエネルギーが減るような表示にしてる。

 0になるとゲームオーバー。
 
 
 
1MAP_STG_ver.0.010.zipファイル
 1MAP_STG_ver.0.010

コメントを残す

メールアドレスが公開されることはありません。