Unity3D で乱数を生成する
このチュートリアルでは、unity3d で乱数を生成する方法について説明します。 float
と int
の戻り値の型を持つ乱数ジェネレーターを実装し、例を使用して実行動作を調べます。
Unity3D の乱数ジェネレーター
UnityEngine.Random
は乱数を生成する組み込みメソッド Range()
を提供します。 残念ながら、Unity3d では Range()
メソッドは int
と float
の両方のデータ型に対してオーバーロードされています。
float
または int
データ型をパラメーターとして渡すことで、このメソッドを呼び出すことができます。 この関数のパラメーターは、下限と上限を指定して乱数の範囲を定義します。
float
戻り型の UnityEngine.Random.Range
関数の定義は次のとおりです。
public static float Range(float minValue, float maxValue);
Range()
メソッドは、[minValue to maxValue]
内の乱数 float
を返します。 maxValue
が minValue
より小さい場合、このメソッドは値を交換します。
float
Range()
メソッドには下限と上限が含まれます。 たとえば、Random.Range(1.2f,5.2f)
は、極端な値を含め、1.2
から 5.2
までの数値を返します。
int
戻り型の UnityEngine.Random.Range
関数の定義は次のとおりです。
public static int Range(int minValue, int maxValue);
このメソッドは、[minValue to maxValue]
の範囲内のランダムな整数を返します。 次の動作は、このメソッドの実行方法です。
- このメソッドには上限は含まれません。 たとえば、
Random.Range(-5, 5)
は-5
と4
の間の値を返します。 minValue
とmaxValue
の両方が等しい場合、上限は除外され、メソッドは下限、つまりminValue
を返します。maxValue
がminValue
より小さい場合、数値は自動的に交換されます。
これらのメソッドの両方を Unity3D プロジェクトに実装します。 以下は、これらの関数を実装する完全なデモンストレーションです。 しかし、まず、プロセスを順を追って見ていきましょう。
-
新しいプロジェクトを作成
新しい Unity プロジェクトを作成します。 デフォルトでサンプルシーンが作成されます。
-
3D ゲーム オブジェクトの作成
ヒエラルキー ウィンドウを右クリックして、シーン内に任意の 3D ゲーム オブジェクトを作成します。
-
float
乱数ジェネレーターを生成する C# スクリプトの作成プロジェクト ウィンドウで右クリックして、新しい C# スクリプトを作成します。 次に、新しく作成したスクリプトに次のコード スニペットを記述します。
次のコード スニペットは、
float
乱数ジェネレーターを示しています。 このコード スニペットは、-5.0
と5.0
の範囲内で生成された乱数を追加することにより、gameObject
をx 方向
に移動します。using System.Collections; using System.Collections.Generic; using UnityEngine; public class RandomNumberGenerator : MonoBehaviour { public GameObject gameObject; float xOffset = 0.0f; void OnGUI() { xOffset = Random.Range(-5.0f, 5.0f); if (GUI.Button(new Rect(10, 300, 100, 50), "MOVE")) { gameObject.transform.position = new Vector3(gameObject.transform.position.x + xOffset, gameObject.transform.position.y, gameObject.transform.position.z); } } }
-
スクリプトをゲームオブジェクトにアタッチ
シーンで作成されたゲーム オブジェクトにスクリプトをアタッチします。 次に、ゲーム オブジェクトを階層からドラッグしてスクリプトに渡します。
-
ゲームを実行
ゲームを実行し、Game View の
Move
ボタンを押して、ゲーム オブジェクトの位置を変更します。 -
空のゲームオブジェクトを作成
シーンに空のゲーム オブジェクトを作成して、整数型の乱数ジェネレーターを実装します。
-
int
乱数ジェネレーターを生成する新しい C# スクリプトの作成新しい C# スクリプトを再度作成し、スクリプトに次のコードを記述します。 このコード フェンスは、
1
と4
(整数) の間の乱数を生成し、0
を含む降順の値を出力します。using System.Collections; using System.Collections.Generic; using UnityEngine; public class IntRNG : MonoBehaviour { void Start() { int x = Random.Range(1, 5); for (int i = x; i >= 0; i--) { print(i); } } }
-
スクリプトを空のオブジェクトにアタッチ
上記のスクリプトを、シーンで作成された空のゲーム オブジェクトにアタッチします。
-
ゲームを実行
ゲームを実行し、コンソール ウィンドウをチェックして出力を確認します。 詳細については、Unity3D 乱数ジェネレーター を参照してください。