Generare oggetti con un timer
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 49 di 67.
Uno spawner che crea qualcosa ogni pochi secondi ha bisogno di un timer. Time.deltaTime è il tempo impiegato dall'ultimo frame, quindi sommarlo in un campo a ogni Update() dà i secondi trascorsi. Quando il totale raggiunge l'intervallo, genera l'oggetto e sottrai l'intervallo dal totale.
Questa fontana lancia una goccia d'acqua ogni mezzo secondo:
public GameObject dropPrefab;
public float interval = 0.5f;
float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
Instantiate(dropPrefab, transform.position, Quaternion.identity);
timer -= interval;
}
}timer -= interval conserva il tempo residuo: se il frame termina a 0.51 secondi, il successivo mezzo secondo inizia a essere conteggiato da 0.01, e le gocce restano a tempo. timer = 0 eliminerebbe il tempo residuo, quindi ogni goccia arriverebbe un po' in ritardo e il ritardo si accumulerebbe nel corso di una partita lunga. timer è privato perché nessuno deve impostarlo nell'Inspector.
Sfida
MedioIl Dropper dovrebbe far cadere una scatola ogni interval secondi (l'Inspector indica 2): la prima scatola 2 secondi dopo aver premuto Play, poi una ogni 2 secondi.
- Genera ogni scatola nella posizione del dropper, senza rotazione.
- Dopo ogni scatola, registra il suo numero:
Box 1,Box 2e così via.
Premi Play e guarda la pila crescere, poi premi Check.
Provalo tu
using UnityEngine;
public class BoxDropper : MonoBehaviour
{
public GameObject boxPrefab;
public float interval = 1f;
void Update()
{
// Ogni interval secondi: lascia cadere una scatola e registra "Box 1", "Box 2"...
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di scripting in Unity
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce9Prefab e generazione di oggetti
Prefab e InstantiateGenerare oggetti con un timerGenerare oggetti in una grigliaElenchi di oggettiDistruggere oggettiGenerazioni casualiRiepilogo: fuochi d'artificio