Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Il 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 2 e 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"...
    }
}
quiz iconMettiti alla prova

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