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.
Sfida
MedioOgni clic fa cadere una cassa da un punto casuale sopra il pavimento.
- All'interno dell'
ifdel clic, sceglifloat x = Random.Range(-4f, 4f);efloat zallo stesso modo. - 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
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce11Prefab e generazione di oggetti
Prefab e InstantiateGenerare con un timerGenerare in una grigliaElenchi di oggettiEliminare il più recenteDestroyGenerazioni casualiRipasso: fuochi d'artificio3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity