Prefabデータをたくさん生成する際に、座標をランダムにして出現させてみましょう。
Y座標をランダムにして、1秒おきにCubeを出現させています。
関連記事:
1秒おきにランダムでボールを落とす
ランダムでPrefabの座標を変える
出現時間をランダム(秒)にする
Instantiateでオブジェクトの角度を変える
オブジェクトを動かす
まずはオブジェクトを動かすところから作りましょう。
Cubeオブジェクトを用意します。
CubeMove.csを作成して、Cubeに追加します。
CubeMove.csを書きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { [SerializeField] float speed = 5; void Update() { transform.position += new Vector3(Time.deltaTime * speed, 0, 0); if(transform.position.x >= 10) { Destroy(gameObject); } } } |
プレイして動きを確認します。
X座標が10のところまで動いて、Cubeは非表示になります。
座標をランダムにして出現
次は、Cubeをプレハブ化して生成します。
ただCubeを出すだけでなく、Y座標をランダムにしながら出現させてみます。
まずはCubeをプレハブにしましょう。
Cubeの元データは削除しておきます。
空のオブジェクトを作成しましょう。
GameObjectの名前で空のオブジェクトができました。
GameManager.csを作成して、GameObjectに追加しましょう。
GameManager.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 GameManager : MonoBehaviour { [SerializeField] GameObject ball; private float time; private float vecY; void Start() { time = 0.0f; } void Update() { time -= Time.deltaTime; if(time <= 0.0f) { time = 1.0f; vecY = Random.Range(-5,5); Instantiate(ball,new Vector3(-10, vecY, 0),Quaternion.identity); } } } |
GameObjectのインスペクターを確認します。
Ballのフィールドが出来ているので、ここにCubeのプレハブを入れましょう。
ゲームプレイして、動きを確認します。
Xを-10の位置に、Yを-5~5の位置にランダム生成。
生成されたプレハブは、X-10まで動いて削除されます。
関連記事:
1秒おきにランダムでボールを落とす
ランダムでPrefabの座標を変える
出現時間をランダム(秒)にする
Instantiateでオブジェクトの角度を変える