| 敵の生成と移動アルゴリズム1 | |||||
敵の移動や硬さなどを制御する要素には、
また、このサンプルではこれらの要素のほかに、
まず、メインルーチンでどういったタイミングで敵を生成するかの制御を行っています。このサンプルではレベルが上がっていくと生成頻度が高くなるような形になっています。これを、決まったタイミングでいつも同じように出現するようにしようと思うと、全く違った形の処理(「Aeolianation」ではそういう処理をおこなっています)をしなければなりません。 続いて「敵生成」のルーチンで、どの敵を出現させるのかを決め、その固さや初期出現位置などを決めます。ここでは乱数(変数tempに代入した値)によってそれを決めていますが、弱い敵1を多く出現させ、強い敵3はあまり出現させないようにしています。見たままですが、(敵1:敵2:敵3)=(3:2:1)という出現頻度になっています。
ここでは敵の動きと弾発射のタイミングを決めています。まず、自機との距離(x軸の差とy軸の差)を求め、y軸方向の距離が350未満の時には、自機に接近する方向にx軸の移動速度を変化させています。この移動速度を一気に変えると恐ろしい動きをすることになってしまうので、だんだん変化させ、一定以上の速度にはならないようにしています。 続いて、自機とのx軸方向の距離(差を求めてから絶対値を出す)を調べ、自機との距離が50未満の時には弾生成ルーチンへ飛ぶようになっています。 ・・・そしてここでもまたやっちゃってるんですが、先に表示してから移動をさせてしまっています。これをやってしまうと本来の位置と画像の表示位置が微妙にずれるので、当り判定をした時に「画像は当ってないのに当った」ということが起こってしまうので、移動をしてから表示するようにしましょう。悪い例です^^; 最後に、画面外へ消えたときは消滅させる処理を行っています。画面外から戻ってくるようにするには、ここの値を変えたり処理しないようにすればいいのです。ただ、最終的には消滅させるようにしなければ、画面外に消えた敵がいつまでも残り、emaxで決めた値を超えるとそれ以上敵が出てこないようになってしまうので気をつけましょう。
|