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.
Desafío
IntermedioEl 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 2y 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"...
}
}
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
1Tu primer script
Hola, UnityColoca el cuboMuévete en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo4Vectores
Sumar vectoresDireccionesEspacio local y globalVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron7Proyecto: Atrapa la estrella
El atrapadorUna estrella fugaz10El ciclo de vida de los scripts
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vida2El Inspector
Campos del InspectorSerializeFieldNúmeros decimales y MathfAtributos del InspectorRepaso: Ascensor5Transformaciones y jerarquía
Padres e hijosEscalaMirar objetosMoverse hacia un puntoRepaso: Luna en órbita8Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias superan a FindEl valor nulo de UnityRepaso: la moneda más cercana11Proyecto: Esquiva los bloques
El corredorBloques que caen6GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz9Prefabs y generación
Prefabs e instanciarGenerar con un temporizadorGenerar en una cuadrículaListas de objetosDestruirGeneración aleatoriaRepaso: fuegos artificiales