Prefab生成をくり返す中で、10分の1の確率で、種類の異なるPrefabを生成できるようにスクリプトを作成してみましょう。
通常ブルーのボールを1秒おきに出現させますが、10分の1の確率で、赤ボールが出てきます。
0~9のランダム数値を取得し、その中の1つに数字が該当すれば、ボールを切り替えるようにします。
関連記事:
二分の一の確率でPrefabを変える
重複無しでリストからランダム抽出(シャッフル)
重複せずランダムでオブジェクトを並べる
種類の違うPrefabをランダムで出現させる
ランダム表示したPrefabを順に配列に入れる
百の単位でランダム数値を取得
ランダム数値の中から1つを指定
Sphereを作成して、名前をSphereBlueに変更。
リジッドボディを追加して、マテリアルで青色をつけます。
もう一つSphereを作成して、名前をSphereRedに変更。
リジッドボディを追加して、マテリアルで赤色をつけます。
2つのSphereをプロジェクトビューにドラッグ&ドロップして、Prefab化します。
2つの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 29 30 31 32 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDrop : MonoBehaviour { public GameObject[] balls; private float time; private int number; void Start() { time = 1.0f; } void Update() { time -=Time.deltaTime; if(time < 0.0f) { time = 1.0f; number = Random.Range (0, 10); if(number == 0) { Instantiate(balls[0],new Vector3(0, 5, 0),Quaternion.identity); } else { Instantiate(balls[1],new Vector3(0, 5, 0),Quaternion.identity); } } } } |
Random.Rangeで整数を扱う場合、(0, 10)と書けば0~9の乱数を算出しするので注意しましょう。
要素数のフィールドに2を入力。
要素0、1にそれぞれ、SphereRed、SphereBlueを入れます。
ゲームプレイしてみましょう。
1秒おきにボールが生成されて、10分の1の確率で、赤ボールが出てきます。
関連記事:
二分の一の確率でPrefabを変える
重複無しでリストからランダム抽出(シャッフル)
重複せずランダムでオブジェクトを並べる
種類の違うPrefabをランダムで出現させる
ランダム表示したPrefabを順に配列に入れる
百の単位でランダム数値を取得