#7 敵機を作る(1)

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

前回までで実機が弾を発射するところまでできました。しかし、どれだけ弾を撃っても当てる物がなければ空しいものです。

今回のゴール

動く敵機を作る

敵機のスプライトを召喚する

メニューからゲームオブジェクト2Dオブジェクトスプライト三角形を選びます。自機を召喚したときと同じです。はい出ました!

これだと自機と紛らわしいので、向きを変えます。インスペクタでZ軸を180°回転します。

すると向きが上下逆になります。

上下を逆にするということは、Y軸を回転したくなるところですが、この場合Z軸なんです。Z軸は画面の手前から奥に向かう軸をイメージしてください。

このゲームオブジェクトは名前をEnemyと名付けます。

リジッドボディを取り付ける

これもスクリプトから動かしますので、2Dリジッドボディを付けておきます。メニューからコンポーネント2D物理2Dリジッドボディです。

スクリプトから動かす場合、必ずしもリジッドボディが必要なわけではないのですが、今回はリジッドボディの機能を使って動かす予定なので、リジッドボディを付けています。

敵機のスクリプトを作成する

今度は敵機のスクリプトを作成します。Scriptsフォルダを開いて、何もないところで右クリックし、作成MonoBehaviourスクリプトを選びます。できたスクリプトの名前はEnemyにします。これを開きます。

Enemy.cs

おなじみのコードができました。早速取り付けましょう。

実行すると・・・。

リジッドボディの重力設定をなくすのを忘れていました。インスペクタで重力スケールを0にして再度実行。

今度は落ちなくなりました。次にスクリプトからリジッドボディの設定をできるようにします。

ここは、Bullet.csと同じですので、コピペしました。speedの初期値は変えていますが。次にStart関数の中身に次の行を追加しました。

Bulletの場合は、Vector2.up * speedだったものが、Enemyの場合はtransform.up * speedに変わっています。Vector2.upの場合は、オブジェクトがどのように回転していても画面の上の方を指していますが、transform.upは、オブジェクトの回転の向きに合わせて進行方向が変わります。つまり、オブジェクトが上を向いていれば上に進むし、下を向いていれば下に進みます。今回は、敵機が回転する仕様にしたいので、自分が向いている方向に進むようにしました。

気になる方は、transform.upのところをVector2.upに変更して実験してみて下さい。

ちなみに、クラスの中の関数のことをメソッド、クラスの中で定義されている変数をメンバー変数と呼んだりします。本ブログでも以降はメソッドメンバー変数と呼んでいくことにします。

ここまでのコードは以下の通りです。

Enemy.cs

Enemyのプレハブを作る

ここまでできたら、Enemyもプレハブにしてしまいましょう。

Enemyの色を変える

向きが違うとしても、形も色も同じでは紛らわしいことこの上ないので、せめて色を変えましょう。

PrefabフォルダのEnemyを選択します。インスペクタのSpriteRendererの色を表す長方形を選択します。

赤を選択します。

Enemyのプレハブが赤になりました。ついでに、シーンに配置されているゲームオブジェクトも赤になりました。このようにプレハブの働きとして、プレハブに変更を加えると、そのプレハブを基にしているゲームオブジェクトもすべてその変更の影響を受けます

せっかくなので、敵機を増やしましょう。シーンの上部に並べました。

これを実行してみます。

敵機が次々に下方向に向かって進んでいきます。

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

コメント

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