| 敵の生成と移動アルゴリズム2 | ||||
続いて「敵2」のアルゴリズムです。敵を何種類も用意しようと思ったら、このようにその数だけサブルーチンを用意しなければなりません。この敵の動きがゲーム性を決める要素の一つでもあるので、いろいろと頭をひねりましょう。意外にこういう作業が楽しかったりします。
まず出現してからすぐのタイミングで、左右どっちへ動くか決めます。この場合、自機の方向へ動くようにし、その方向は死ぬ(消える)まで変わりません。 続いて一定時間経過後、y軸の移動方向を変え、画面の上のほうに進むようにします。V型カーブの動きにしようと思ったら、ここでeyv.cntの値を一気に変えればいいのです。この敵はU型カーブの動きをするように、eyv.cntの値を徐々に変化させています。 弾を撃つタイミングは、y軸座標によって決めています。だいたいカーブの頂点当りで乱射するようになっています。 もっと複雑な動きをさせたい場合、et.cnt(生成からのフレーム数)が非常に意味を持ってきます。これをうまく使えば、一定時間経過後自爆して弾をばらまく「機雷」とか、一定距離を移動した後静止して弾を撃ち再度動く、といった動きも可能になってきます。「Aeolianation」ではボスも含めれば30種類以上の敵を用意してあります。変数の名前は違いますが、基本は同じなので参考にして下さい。 「Aeolianation」のソースを見る上での注意としては、大きさの違う敵の場合座標の調整を行っていることです。というのは、自機の座標(mx,my)にしても敵機の座標(ex,ey)にしてもそこを左上として画像を表示するために、大きさの異なるもの同士だと本来当り判定を行いたい位置とはずれが出てくるのです。 ![]()
|