いくつかのポイントから、オブジェクトがランダムで出現するように、スクリプトを作成してみましょう。
ABC3つのポイントのいずれかがランダムで選ばれて、1秒おきにボールが生成されます。
配列の中に3つのポイントを入れることで、ランダム表示の仕組みをつくります。
関連記事:
音ゲーのノーツみたいなオブジェクト動作
敵キャラがランダム移動して発射
3つのポジションから順番にPrefab生成
10分の1の確率で異なるPrefabを生成
Instantiateでオブジェクトの角度を変える
誤差をつけてあえて命中率を下げる
同じサイズだけ位置をずらしてPrefab生成
配列のオブジェクトをランダムで選ぶ
空のオブジェクトを作成し、名前をAに変更。
座標を変えます。
空のオブジェクトの位置をわかりやすくするために、アイコンを付けます。
シーンビューでこのように見えています。
Aを複製して名前をBに変更し、座標を変えます。
Bを複製して名前をCに変更し、座標を変えます。
スクリプトを紐づけするために、空のオブジェクトを新規作成します。
Sphereを作成し、リジッドボディを追加します。
Sphereをヒエラルキーにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
BallDrop.csを作成し、GameObjectに追加します。
BallDrop.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDrop : MonoBehaviour { [SerializeField] GameObject[] spawnPoint; [SerializeField] GameObject ball; private float spawnTimer; void Start() { spawnTimer = 0; } void Update() { spawnTimer -= Time.deltaTime; if(spawnTimer <= 0) { GameObject randomPoint = spawnPoint[Random.Range(0, spawnPoint.Length)]; Instantiate(ball, randomPoint.transform.position, Quaternion.identity); spawnTimer = 1; } } } |
サイズに3を入力し、要素0~2に、ABCの各ポイントを入れます。
Ballのフィールドには、Sphereのプレハブを入れます。
ゲームプレイしましょう。
ABCの各ポイントのいずれかが選ばれ、そこからボールが出現します。
関連記事:
音ゲーのノーツみたいなオブジェクト動作
敵キャラがランダム移動して発射
3つのポジションから順番にPrefab生成
10分の1の確率で異なるPrefabを生成
Instantiateでオブジェクトの角度を変える
誤差をつけてあえて命中率を下げる
同じサイズだけ位置をずらしてPrefab生成