ボールを何個も表示したい場合は、ボールをプレハブ化して、プログラムから必要なタイミングで出現させる方法が現実的です。
ここでは、2秒ごとにボールをランダムな位置に出現させることを考えます。
① Ballオブジェクトを作る
ヒエラルキーで Ball オブジェクトを作ります。
② Ballをプレハブ化する
ヒエラルキーの Ball を、Projectウィンドウの Assets にドラッグ&ドロップします。
これで、Assets内に Ballプレハブ が作られます。
③ ヒエラルキーのBallを削除する
今回はプログラムからBallを出現させるので、ヒエラルキーにある元の Ball オブジェクトは削除します。
④ Ballを出現させるためのオブジェクトを作る
ヒエラルキーで空のGameObjectを作り、
BallPre
という名前にします。
⑤ スクリプトを作る
BallPre を選択して、
Add Component → New Script
から、
BallPreSc
というスクリプトを作ります。
⑥ Ballプレハブを登録する変数を作る
BallPreSc に次のように書きます。
public GameObject ballPrefab;
すると、BallPreのInspectorに Ball Prefab という項目が表示されます。
⑦ Ballプレハブを登録する
Assetsにある Ballプレハブ を、Inspectorの Ball Prefab にドラッグ&ドロップします。
これで、スクリプトからBallプレハブを利用できるようになります。
⑧ 2秒ごとにBallを出現させる
BallPreSc を次のようにします。
using UnityEngine;
public class BallPreSc : MonoBehaviour
{
public GameObject ballPrefab;
void Start()
{
InvokeRepeating(“SpawnBall”, 2f, 2f);
}
void SpawnBall()
{
Vector3 spawnPosition = new Vector3(
Random.Range(-11f, 11f),
transform.position.y,
0f
);
Instantiate(ballPrefab, spawnPosition, Quaternion.identity);
}
}
プログラムの意味
InvokeRepeating(“SpawnBall”, 2f, 2f);
これは、
「ゲーム開始から2秒後に SpawnBall() を実行し、その後も2秒間隔で繰り返す」
という意味です。
そして、
Random.Range(-11f, 11f)
によって、X座標を -11~11の範囲からランダムに決定しています。
最後に、
Instantiate(ballPrefab, spawnPosition, Quaternion.identity);
によって、指定した位置にBallプレハブを生成します。
つまり全体の流れは、Ballを作る → プレハブ化 → スクリプトにプレハブを登録 → InvokeRepeatingで2秒ごとにSpawnBallを呼ぶ → InstantiateでBallを生成

コメント