Menu
CoddyTech

Generazioni casuali

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 68 di 85.

Random.Range(min, max) sceglie un numero casuale e ciò che può restituire dipende dal tipo di numeri che gli fornisci. Con i float, può uscire qualsiasi valore da min a max, estremi inclusi. Con gli int, max è escluso. Perciò, per lanciare un dado si richiede un numero da 1 a 7:

int roll = Random.Range(1, 7);   // 1, 2, 3, 4, 5 o 6
Debug.Log("You rolled " + roll);

La versione int esclude max, così Random.Range(0, names.Length) restituisce sempre un indice valido per l'array. Significa anche che Random.Range(-5, 5) restituisce solo i numeri interi da -5 a 4, anche quando memorizzi il risultato in un float. Scrivi Random.Range(-5f, 5f) per ottenere qualsiasi valore intermedio.

Per posizioni e direzioni in 3D, Unity offre due vettori casuali già pronti. Random.insideUnitSphere è un punto casuale all'interno di una sfera di raggio 1 centrata in (0, 0, 0). Random.onUnitSphere è un punto casuale sulla superficie di quella sfera, quindi rappresenta una direzione casuale di lunghezza 1. transform.position + Random.insideUnitSphere * 2f indica una posizione distante fino a 2 unità in qualsiasi direzione, anche verso l'alto e verso il basso.

challenge icon

Sfida

Medio

Ogni clic fa cadere una cassa da un punto casuale sopra il pavimento.

  1. All'interno dell'if del clic, scegli float x = Random.Range(-4f, 4f); e float z allo stesso modo.
  2. Chiama Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);.

Premi «Gioca» e fai clic alcune volte: le casse cadono in nuovi punti. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class CrateDropper : MonoBehaviour
{
    public GameObject cratePrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // Lascia cadere una cassa da un punto casuale: x e z da -4 a 4, y = 5
        }
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity