Unityで作るシューティングゲーム

Unityで作る「シューティングゲーム」前回はバックグラウンドで動き続ける惑星や星雲を作ってみました。
いよいよ今回から実際にコントロールできるオブジェクトが登場してきます。

Step:1 プレイヤーのマシンの準備と配置

①まずは取得済みのアセットからお気に入りのマシンを選んでみよう!
[2D Space Kit] => [Ships and Stations] の中にありますよ。手本では「Destroyer 1」というマシンを選んでみました。
 選択した画像を Hierarchy に取り込んで、名前を「Player」に変更しておきます。
Hierarchy は画面に左上のエリアです。ここは登場するオブジェクトをまとめておいておくエリアですよ。すでに背景画像や、惑星などが保管されていますね?

②続いてこの「Player」にコンポーネントを追加していきます。
コンポーネントは選択した画像の動きや見た目や場所などを管理するものです。
コンポーネントがないとただの「絵」でしかない。
実はこの「絵」も SpriteRenderer というコンポーネントが管理しているんです。
まず追加するのは以下の2つ。Inspector の一番下にある「Add Component」を押して選択しましょう。

  1. Rigidbody 2D 物理エンジンです。オブジェクトの速度や重力などを管理します。
  2. Polygon Collider 2D 他のオブジェクトとの衝突判定を管理するコンポーネントです。
Unityで作るシューティングゲームVol.03

③追加した「Rigidbody2D」を選択して、「Gravity Scale」を 0 にします。
これは重力を管理するプロパティで、初期値は1。
そのままにしておくと、ゲームが始まった瞬間に下に落下してしまいます。

④続いて追加した「Porygon Collider2D」から「Edit Collider」を選択、マシンのコライダー(衝突判定部分)を指定します。
ポリゴンは三角形の集まり、調整しなくても大丈夫だと思います。

Unityで作るシューティングゲームVol.03

このプレイヤーは、ミサイルを撃って攻撃します。
中央から1発だとつまらないので、両翼からミサイルを発射したいと思います。
これを実現する方法はいくつかありますが、今回は「タレット」をマシンにくっつけて、そこからミサイルを出しましょう。

⑤取得済みのアセットの「Turrets」というフォルダから、好きな素材を選択してください。

⑥まずは左側の「Turret」をプレイヤーの子要素として配置、名前を「TurretLeft」とします。
さらにTransformコンポーネントのPosistion プロパティを下の画像のように指定します。
この値は選んだマシンによって異なりますので各自、マシンに合うように配置しましょう。
ここの値はマシンに対し相対的な位置(マシンを0にしたときの位置)になります。

⑦同様に右側の「Turret」を配置し、「TurretRight」と名前を指定してください。ポジションも指定しておきましょう。

⑧「SpriteRendererコンポーネント」の「SortingLayer」に新たなレイヤー「Turret」を指定し、2つの「Turret」にセットしましょう。
いったんレイヤー「Turret」はPlayerより下に作り、プレイヤーのマシンより手前に見えるようにしておきます。(後でマシンの下に隠します)

Unityで作るシューティングゲームVol.03

さてこれで、マシンの準備ができましたので、まずはマシンを動かしてみたいと思います。
[02_Scripts]フォルダ内に 「PlayerController」 というスクリプトファイルを作って、以下のコードを記述してみましょう。

float acceleration = 5f;                  //マシンの速度
public float turret_rotation_speed = 3f;  //タレットの回転速度
Rigidbody2D playerRb2d;                   //Rigidbodyを管理する変数
void Start()
{
    playerRb2d = GetComponent<Rigidbody2D>();   //Rigidbodyコンポーネントの取得
    transform.position = new Vector3(0, -5, 0); //初期位置指定
}
 
void Update()
{
    playerRb2d.velocity *= 0.995f;       //減速
    if (Input.GetKey(KeyCode.LeftArrow)) //左キーを押したとき
    {
        playerRb2d.AddForce((-transform.right) * acceleration);  //左向きの速度を与える
    }
    if (Input.GetKey(KeyCode.RightArrow)) //右キーを押したとき 
   { 
       playerRb2d.AddForce((transform.right) * acceleration);  //右向きの速度を与える
    }
}

ちょっと難しいですか?
詳しい解説は、教室までお問い合わせください!
お問い合わせは こちら から。
作成したスクリプトファイルを、マシンにアタッチして動かしてみましょう。
左右に動くようになっていると思います。
速度は各自調整してみてください!
さらに今回は、ミサイルを撃つ準備までしておきましょう。
ミサイルの素材も取得したアセットにあるようなので、それを使います。

⑨素材の「Prefab」というフォルダにある、「Projectile Sharp」というプレハブを使います。
プレハブというのは何度も使える素材、スクラッチでいう「クローン」ですね?
事前に[03_Prefab] というフォルダを作っておき、この素材をコピーして持ってきましょう。

⑩コピーしたミサイルのプレハブを改造します。
「SpriteRenderer」のColorを青系の色に、さらに「SortingLayer」に「Turret」を指定。
「TrailRenderer」の色も青系にしておきます。
これはミサイルの軌道を描く色になります。
もう一つ、このプレハブについているスクリプトファイル「Projectile.cs」はRemoveConponent で外しておきます。

今回はここまで。

次回はいよいよ、プレイヤーが攻撃できるように改造していきます。お楽しみに!

教室では実際に通って頂いての授業の他、オンライン授業も行っています。ご興味がある方は、ぜひお問い合わせ、または体験授業にお問い合わせください!
お問い合わせは こちら から。体験授業のお申込みは こちら から。

無料体験授業 いつでも受け付けています!

体験授業を受ける子供

スクラッチ、Unityでちょっとしたゲームを作ってみる

HTMLやCSSでWebサイト作成体験

初めてパソコンやタブレットに触れてみる

エクセルやワード、パワーポイントの学習をちょっと体験

まずは1時間程度の無料体験授業を受けて、教室の雰囲気や講師の人柄に触れて頂き、ご自身、お子様に合うのかどうかご確認ください!