random
Random
Třída pro generování náhodných dat.
Statické vlastnosti:
- insideUnitCircle - Vrací náhodný bod uvnitř kruhu s poloměrem 1 (pouze pro čtení).
- insideUnitSphere - Vrací náhodný bod uvnitř koule s poloměrem 1 (pouze pro čtení).
- onUnitSphere - Vrací náhodný bod na plochu koule s poloměrem 1 (pouze pro čtení).
- rotation -Vrací náhodnou rotaci (pouze pro čtení).
- rotationUniform -Vrací náhodnou rotaci s rovnoměrným rozložením (pouze pro čtení).
- state - Slouží k uložení stavu generátoru a znovu obnovení generátoru.
- value - Vrátí náhodné číslo mezi 0,0 [včetně] a 1,0 [včetně] (Pouze ke čtení).
Statické metody:
- ColorHSV - Náhodná barva s hodnotami HSV a alfa v zadaném rozsahu.
- InitState(int číslo) - Inicializuje stav generátoru náhodných čísel podle čísla.
- Range - Vrátí náhodné číslo typu float nebo int mezi zadanými hodnotami.
insideUnitCircle
transform.position = Random.insideUnitCircle * 5;
insideUnitSphere
transform.position = Random.insideUnitSphere * 5;
onUnitSphere
transform.position = Random.onUnitSphere * 4;
rotation
transform.rotation = Random.rotation;
rotationUniform
private IEnumerator Start()
{
while (Application.isPlaying)
{
Quaternion rotation = Random.rotationUniform;
while(Vector3.Distance( this.transform.root.eulerAngles, rotation.eulerAngles) > 1.0f)
{
this.transform.rotation = Quaternion.Slerp( this.transform.rotation, rotation, Time.deltaTime);
yield return null;
}
yield return new WaitForSeconds(1.0f); //počká vteřinu, pak znovu spustí rotaci
}
}
state
void Start ()
{
Random.State oldState = Random.state;
PrintRandom("Step 1" );
PrintRandom("Step 2" );
Random.state = oldState;
PrintRandom("Step 3" );
PrintRandom("Step 4" );
}
void PrintRandom(string label)
{
Debug.Log(string.Format("{0} - RandomValue {1}" , label, Random.Range(1, 100)));
}
value
if (Input.GetKeyDown(KeyCode.Space))
{
Renderer rend = GetComponent<Renderer>();
rend.material.color = new Color(Random.value, Random.value, Random.value);
}
ColorHSV
void OnMouseDown()
{
GetComponent<Renderer>().material.color = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);
}
InitState
Generátor náhodných čísel není skutečně náhodný, ale generuje čísla v přednastavené sekvenci. Podle zadaného čísla
se generuje vždy stejné sekvence čísel.
for (int i = 0; i < 5; i++)
{
Random.InitState(42);
float noiseValues = Random.value;
Debug.Log(noiseValues);
}
Pro náhodná čísla (
jakoby-hláška jedné slečny v práci:) ) se může využít systémový čas.
var dt = System.DateTime.Now;
Random.InitState(dt.Second*dt.Minute);
float noiseValues = Random.value;
Debug.Log(noiseValues);
Range
Generuje float od -5 do 3.
transform.position = new Vector3(Random.Range(-5.0f, 3.0f), transform.position.y);
Generuje int od-5 do 2.
transform.position = new Vector3(Random.Range(-5, 3), transform.position.y);