指定した5つのポイントを登録し、その順番で発射できる仕組みをつくってみましょう。
あらかじめ出現場所を指定できるため、音ゲーのノーツのような動きをつけることができます。
クリックすれば、オブジェクトが破壊されます。
関連記事:
向かってくるオブジェクトをクリックで破壊
1秒おきに座標をランダムにして落下
指定した5つのポイントからランダム移動
2つのオブジェクトを順繰りで動かす
オブジェクトのPrefabを作成
Cubeを作成し、少し平べったくします。
まずはCubeを動かせるように、スクリプトを作成しましょう。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { transform.position += new Vector3(Time.deltaTime * 0, 0, -0.2f); if(transform.position.z <= -20) { Destroy(gameObject); } } } |
Cubeをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Cubeの元データは削除しておきます。
発射ポイントを指定して順番に生成
空のオブジェクトを作成し、名前をPosition1に変更。
X座標を2、Z座標を10に変えます。
Position1を複製して、Position2~5を作成。
それぞれの座標を以下のように変更します。
続いて、Cubeをランダム生成するスクリプトを作成していきます。
新しく、空のオブジェクトを作成。
CubeShot.csを作成し、GameObjectに追加します。
CubeShot.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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeShot : MonoBehaviour { public Transform[] shotPos = new Transform[5]; private float time; public GameObject cube; //0~4を自由に登録 public int[] array={1,2,3,1,0,4,4,4,0,1,2,2,0,2,2,2,4,3,0,4,0,0,2}; void Start() { StartCoroutine("CubeStart"); } IEnumerator CubeStart() { foreach(int count in array) { Instantiate(cube,shotPos[count].position,Quaternion.identity); yield return new WaitForSeconds(0.5f); } } void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit)) { Destroy(hit.collider.gameObject); } } } } |
要素0~4のフィールドに、Position1~5を入れます。
キューブのフィールドに、Cubeのプレハブを入れます。
ゲームプレイしてみましょう。
クリックすると、オブジェクトを破壊できます。
arrayに登録した番号順に、Cubeが発射されています。
プロセカのような音ゲー制作で、出現する場所を制御することができます。
関連記事:
向かってくるオブジェクトをクリックで破壊
1秒おきに座標をランダムにして落下
指定した5つのポイントからランダム移動
2つのオブジェクトを順繰りで動かす