プレハブ(Prefab)を1つのスクリプトで生成する際、それぞれの座標を個別に設定してみます。
3秒おきに同じタイミングで出現しますが、X座標とZ座標だけが異なります。
関連記事:
1秒おきにランダムでボールを落とす
ランダムでPrefabの座標を変える
出現時間をランダム(秒)にする
Instantiateでオブジェクトの角度を変える
Prefabの座標をランダムにして生成
3つのポジションから順番にPrefab生成
右方向へ移動するスクリプト
Cubeのプレハブを2個用意し、名前をそれぞれ「GreenCube」、「RedCube」としました。
左から右へ動かすためのPrefabMove.csという名前でスクリプトをつくりました。
PrefabMove.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 PrefabMove : MonoBehaviour { [SerializeField] float speed = 10; void Update() { transform.position += new Vector3(Time.deltaTime * speed, 0, 0); if(transform.position.x >= 60f) { Destroy(gameObject); } } } |
PrefabMove.csを「GreenCube」、「RedCube」のプレハブに追加します。
GreenCubeを選択し、コンポーネントを追加 > PrefabMove
GreenCubeにPrefabMoveが追加されています。
RedCubeも同じように、PrefabMoveコンポーネントを追加しておきます。
生成ポジションを個別に変える
この2つのプレハブを、Instantiateで生成しましょう。
空のオブジェクトを作成します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { public GameObject GreenCube; public GameObject RedCube; private float time; void Update() { time -= Time.deltaTime; if(time <= 0.0f) { Instantiate(GreenCube,new Vector3(-20, 0, 0),Quaternion.identity); Instantiate(RedCube,new Vector3(-10, 0, 10),Quaternion.identity); time = 3.0f; } } } |
GreenCube、RedCubeというフィールドが出来ています。
ここに、それぞれのプレハブを入れましょう。
プレイして動きを確認します。
3秒おきに、異なる座標でプレハブが生成されています。
関連記事:
1秒おきにランダムでボールを落とす
ランダムでPrefabの座標を変える
出現時間をランダム(秒)にする
Instantiateでオブジェクトの角度を変える
Prefabの座標をランダムにして生成
3つのポジションから順番にPrefab生成