« [解剖記]敵の生成と移動アルゴリズム1 | トップページ | [解剖記]敵の生成と移動アルゴリズム3 »

[解剖記]敵の生成と移動アルゴリズム2

続いて「敵2」のアルゴリズムです。敵を何種類も用意しようと思ったら、このようにその数だけサブルーチンを用意しなければなりません。この敵の動きがゲーム性を決める要素の一つでもあるので、いろいろと頭をひねりましょう。意外にこういう作業が楽しかったりします。


;■ 敵2
*enemy2
pos ex.cnt,ey.cnt : gcopy 2,300,0,50,50
dx=mx-ex.cnt
if et.cnt<2 {
if dx<0 {
exv.cnt=-6
}
else {
exv.cnt=6
}
}
if et.cnt>25 : eyv.cnt-- : if eyv.cnt<-10 : eyv.cnt=-10
if ey.cnt>200 : gosub *tamaborn
ex.cnt=ex.cnt+exv.cnt
ey.cnt=ey.cnt+eyv.cnt
if ex.cnt<-50 : ef.cnt=0
if ex.cnt>640 : ef.cnt=0
if ey.cnt<-50 : ef.cnt=0
if ey.cnt>480 : ef.cnt=0
return;

まず出現してからすぐのタイミングで、左右どっちへ動くか決めます。この場合、自機の方向へ動くようにし、その方向は死ぬ(消える)まで変わりません。

続いて一定時間経過後、y軸の移動方向を変え、画面の上のほうに進むようにします。V型カーブの動きにしようと思ったら、ここでeyv.cntの値を一気に変えればいいのです。この敵はU型カーブの動きをするように、eyv.cntの値を徐々に変化させています。

弾を撃つタイミングは、y軸座標によって決めています。だいたいカーブの頂点当りで乱射するようになっています。

もっと複雑な動きをさせたい場合、et.cnt(生成からのフレーム数)が非常に意味を持ってきます。これをうまく使えば、一定時間経過後自爆して弾をば らまく「機雷」とか、一定距離を移動した後静止して弾を撃ち再度動く、といった動きも可能になってきます。「Aeolianation」ではボスも含めれ ば30種類以上の敵を用意してあります。変数の名前は違いますが、基本は同じなので参考にして下さい。

「Aeolianation」のソースを 見る上での注意としては、大きさの違う敵の場合座標の調整を行っていることです。というのは、自機の座標(mx,my)にしても敵機の座標(ex,ey) にしてもそこを左上として画像を表示するために、大きさの異なるもの同士だと本来当り判定を行いたい位置とはずれが出てくるのです。

このことについては、敵と自機弾の当り判定の中で詳しく説明をします。

« [解剖記]敵の生成と移動アルゴリズム1 | トップページ | [解剖記]敵の生成と移動アルゴリズム3 »

2.解剖記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445608

この記事へのトラックバック一覧です: [解剖記]敵の生成と移動アルゴリズム2:

« [解剖記]敵の生成と移動アルゴリズム1 | トップページ | [解剖記]敵の生成と移動アルゴリズム3 »