2Dのシューティングゲームを想定して、キーによるプレーヤー操作と、左クリックでのミサイル発射をつくってみましょう。
十字キーまたはWASDの各キーでプレーヤーを操作。クリックするとミサイルを発射します。
関連記事:
2Dゲームで画面端から外へ移動させない
敵に当たるとスコアを加点-2Dシューティング
ゴールすれば花火を打ち上げる
プレーヤー操作
アスペクト比は960×640(3:2)に設定しました。
カメラマークがあると見づらいので、これを非表示にしました。
ギズモ > カメラマークをクリック。
カメラマークが消えました。
続いて、プレーヤーのオブジェクトを用意します。
今回は、ギャラクシア2Dスペースシュータースプライトパック#1のフリーアセットをインポートさせていただきました。
Playerフォルダの中から、使用したい素材を選び、ヒエラルキーにドラッグ&ドロップします。
プレーヤーを3倍に拡大します。
PlayerMove.csを作成し、プレーヤーに追加します。
PlayerMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { [SerializeField] GameObject laser; [SerializeField] float speed; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveY = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector2( Mathf.Clamp(transform.position.x + moveX, -7.0f, 7.0f), Mathf.Clamp(transform.position.y + moveY, -4.5f, 4.5f) ); if (Input.GetMouseButtonDown(0)) { Instantiate(laser, transform.position, Quaternion.identity); } } } |
速度のフィールドを5にします。
ミサイルのプレハブを用意
ミサイルのPrefabデータを作成しましょう。
Effectsフォルダの中から好みのミサイルを選択し、ヒエラルキーにドラッグ&ドロップします。
Assetsの中にPrefabフォルダを作成し、ミサイルをドラッグ&ドロップしてプレハブ化します。
ミサイルの元データは削除しておきます。
ミサイルを動かすスクリプト
ミサイルのPrefabに、スクリプトを作成して動くようにします。
コンポーネントを追加 > 新しいスクリプト > LaserMove > 作成して追加
LaserMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class LaserMove : MonoBehaviour { [SerializeField] float laserSpeed; void Update() { transform.position = new Vector2(transform.position.x, transform.position.y + laserSpeed * Time.deltaTime); if (transform.position.y > 7.0f) Destroy (gameObject); } } |
LaserSpeedのフィールドには、ミサイルの速度を入力してください。
プレーヤーを選択します。
Laserのフィールドに、ミサイルのプレハブを入れます。
また、プレーヤーを前面に表示させたいので、レイヤーの順序を1にします。
ゲームプレイしてみましょう。
十字キー、または[W][A][S][D]のキーでプレーヤー操作。
クリックでレーザーミサイルを発射します。
関連記事:
2Dゲームで画面端から外へ移動させない
敵に当たるとスコアを加点-2Dシューティング
ゴールすれば花火を打ち上げる