今回は敵キャラをつくります。そして自機を追わせます。

自機を追わせるには自機に関する情報(フィールドのどこにいるのか?どちらにどれくらいの移動量で移動しているのかなど)が必要です。そこで以下のようなクラスをつくります。

他にも必要なものが出てくるかもしれませんが、とりあえず今はこれだけにしておきます。

Form1クラス内にも自機に関する情報を取得できるメソッドを用意します。

では敵のクラスをつくります。敵は1種類だけではないので敵の基底クラスをつくってそこから派生クラスをつくるようにします。

EnemyBaseクラスを示します。GetJikiInfo()メソッドを呼び出すことができるようにForm1クラスのインスタンスを渡しています。

次にEnemy1クラスを示します。GetJikiInfo()メソッドを呼び出すことができるようにForm1クラスのインスタンスを渡しています。オーバーライドされたUpdate()メソッドのなかでForm1.GetJikiInfo()メソッドで得られた自機の情報から自身の移動方向を求めます。移動方向は自機が次回の方向転換のときまでそのまままっすぐに移動したと仮定して、その位置と現在の敵機の座標からMath.Atan2メソッドで求めます。

敵機のXY方向それぞれの移動量が決まったら、あとは基底クラスのUpdate()メソッドを実行して現在位置を変更します。

では実際に敵キャラを表示させてみましょう。[ゲームスタート]がクリックされたら自機を生成しなおします。そして今回はテスト用の敵を2体だけEnemyBaseのリスト Enemiesに追加します。

自機と敵機の移動速度は同じです。実験してみるとたしかに自機に向かって衝突してきます。なおボスコニアンに出てくる戦闘機のように見えるザコ敵は戦闘機ではなくミサイルです。なので弾丸を発射してくることはありません。