あらかじめ指定した5つのポイントから、ランダムでオブジェクトを発射できる仕組みをつくってみましょう。
決まった座標から重ならずに、四角形のオブジェクトがランダムで出現。
こちらに向かってCubeオブジェクトが移動していきます。
関連記事:
向かってくるオブジェクトをクリックで破壊
1秒おきに座標をランダムにして落下
音ゲーのノーツみたいなオブジェクト動作
別オブジェクトの周りをランダム移動
オブジェクトの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.5f); 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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeShot : MonoBehaviour { public Transform[] shotPos = new Transform[5]; private float time; private int count; public GameObject cube; void Start() { time = 0.1f; } void Update() { time -= Time.deltaTime; if(time <= 0.0f) { count = Random.Range(1,5); Instantiate(cube,shotPos[count].position,Quaternion.identity); time = 0.1f; } } } |
要素0~4のフィールドに、Position1~5を入れます。
キューブのフィールドに、Cubeのプレハブを入れます。
ゲームプレイしてみましょう。
横幅が重ならずに、Position1~5からランダムで出現します。
関連記事:
向かってくるオブジェクトをクリックで破壊
1秒おきに座標をランダムにして落下
音ゲーのノーツみたいなオブジェクト動作
別オブジェクトの周りをランダム移動