ランダムに生成
CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 68/85。
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単位離れた位置を表します。
チャレンジ
中級クリックするたびに、床の上のランダムな場所から木箱が落ちます。
- クリック時の
ifの中で、float x = Random.Range(-4f, 4f);を選び、float zも同じ方法で選びます。 Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);を呼び出します。
「プレイ」を押して数回クリックすると、木箱が新しい場所に落ちます。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// ランダムな位置から木箱を落とす: x と z は -4 から 4、y = 5
}
}
}
Unityスクリプトの基礎のすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド