ランダムに生成
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 53/67。
Random.Range(min, max)はランダムな数値を選び、返される値は渡す数値の型によって異なります。floatの場合、minからmaxまでの値が、両端を含めて返されます。intの場合、max自体は含まれません。そのため、サイコロを振る場合は1から7を指定します。
int roll = Random.Range(1, 7); // 1、2、3、4、5、または6
Debug.Log("You rolled " + roll);int版ではmaxが含まれないため、Random.Range(0, names.Length)は常に有効な配列インデックスになります。また、結果をfloatに格納しても、Random.Range(-5, 5)が返すのは-5から4までの整数だけです。間の任意の値を得るには、Random.Range(-5f, 5f)と書きます。
3D空間で位置や方向を扱うために、Unityにはランダムなベクトルを生成する機能が2つ用意されています。Random.insideUnitSphereは、(0, 0, 0)を中心とする半径1の球の内部にあるランダムな点です。Random.onUnitSphereはその球の表面上のランダムな点で、長さ1のランダムな方向を表します。transform.position + Random.insideUnitSphere * 2fは、上下を含むあらゆる方向に最大2単位離れた位置を表します。
チャレンジ
中級クリックするたびに、床の上のランダムな位置から木箱を落とします。
- x と z:それぞれ -4 から 4 までの任意の値。整数に限りません。
- y:5。木箱が床に落ちるようにします。
- 回転なし。
Play を押して数回クリックし、それから Check を押します。
自分で試してみよう
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// ランダムな位置からcrateを落とす:xとzは-4から4、y = 5
}
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。