#10 敵機の動きを追加する(1)

2Dシューティング
このブログは、趣味でプログラミングを勉強中の筆者が、実験を繰り返しながら、WordPressの使い方の練習も兼ねて、備忘録のように記事を残していくものです。Unityのバージョンは6000.0.32f1です。

敵機の動きが単調すぎるので、もう少しいろんな動きを追加したいなと思います。

今回のゴール

敵機の動きに変化を付ける

敵機の回転

現在のところ、敵機の動きは下のコードになっています。

これは、オブジェクトが向いている方向に進むことを表しています。今は敵機は下を向いているので、下方向に向かって真っ直ぐに進んでいます。そこで、敵機を回転させれば、回転した方向に敵機を進ませることが出来ます。オブジェクトを回転させるのは、以下のコードで実現できます。

2Dのゲームの場合、x軸とY軸は回転させることはないので、0になります。

考えなければいけないのは、どのタイミングでどれだけ回転させればいいのかということです。そこで、Enemyクラスにタイマーを持たせることにします。タイマーと言っても、Update関数が1回呼ばれる度に1増やすだけの簡単な整数の変数です。※60fpsの場合、1秒間に60増加します。

lifeTimeの値を見て、回転させるタイミングを図ることにします。

%は剰余演算子と言って、右側の数値で割った余りを計算します。上記のコードはlifeTimeが10で割り切れる場合(10の倍数の場合)オブジェクトを反時計回りに0.5度回転させます。これにより、Updateが10回呼ばれるごとに(毎回だと回転が速すぎるので)、オブジェクトが少し傾きます。

このまま実行すると、オブジェクトは回転しますが、進行方向は変わりません。つまり回転しながら真っ直ぐ落ちていくことになります。そこで、向きを変えたときは進行方向を変えるようにします。具体的には、rb.linearVelocity = transform.up * speedを、向きを変えたときにも実行するようにします。

Enemy.cs

敵機が曲がってくるようになりました。しかし、画面の右の方から出てきた場合は、左に向かって曲がってほしいものです。ついでに、変更する角度も変数にしておきます。生成されたオブジェクトのx座標を調べて、x座標が0より大きい場合は真ん中より右にあるので、回転の角度を反転(0.5度の場合は-0.5度)させます。これにより左に曲がるようになります。

今回はここまでです。お疲れ様でした。

コメント

タイトルとURLをコピーしました