Menu
CoddyTech

Generar con un temporizador

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 49 de 67.

Un generador que crea algo cada pocos segundos necesita un temporizador. Time.deltaTime es el tiempo que tardó el último fotograma, así que sumarlo en un campo en cada Update() da los segundos que han pasado. Cuando el total alcanza el intervalo, genera el objeto y resta el intervalo del total.

Esta fuente lanza una gota de agua cada medio segundo:

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 el sobrante: si el fotograma termina a los 0.51 segundos, el siguiente medio segundo empieza a contarse desde 0.01, y las gotas mantienen el ritmo. timer = 0 descartaría ese sobrante, así que cada gota llegaría un poco tarde y el retraso se acumularía durante una partida larga. timer es privado porque nadie necesita configurarlo en el Inspector.

challenge icon

Desafío

Intermedio

El Dropper debe soltar una caja cada interval segundos (el Inspector indica 2): la primera caja 2 segundos después de pulsar Play y, luego, una más cada 2 segundos.

  • Genera cada caja en la posición del Dropper, sin rotación.
  • Después de cada caja, registra su número: Box 1, Box 2 y así sucesivamente.

Pulsa Play y observa cómo crece la pila; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Cada interval segundos: deja caer una caja y registra "Box 1", "Box 2"...
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos de scripting en Unity