Menu
CoddyTech

Generar objetos con un temporizador

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 63 de 85.

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

challenge icon

Desafío

Intermedio

Deja caer una caja cada interval segundos (2 en el Inspector).

  1. Añade los campos float timer; y int count;. En Update(), suma Time.deltaTime a timer.
  2. Cuando timer >= interval, llama a Instantiate(boxPrefab, transform.position, Quaternion.identity); y resta interval a timer.
  3. Después, suma 1 a count y registra "Box " + count.

Pulsa «Jugar»: cae una caja cada 2 segundos y la Consola cuenta Box 1, Box 2. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

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

    void Update()
    {
        // Cada interval segundos: suelta una caja y registra "Box 1", "Box 2"...
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity