Coreografiar el tiempo#
Cuando necesitas que varias cosas pasen en orden —la cámara se mueve, un personaje camina, suena música, aparece un texto— hacerlo con corrutinas y temporizadores se vuelve un infierno de sincronización. Timeline es un editor visual donde colocas todo en pistas a lo largo de una línea de tiempo, como un editor de vídeo. Es la herramienta de cinemáticas, intros y momentos guionizados.
Montar una Timeline#
- Crea un objeto vacío (será el "director" de la escena), selecciónalo.
- Abre
Window → Sequencing → Timeliney pulsa Create. Se genera un asset Timeline y un componente Playable Director en el objeto. - Añade pistas con el botón +, una por cada cosa que quieras controlar.
Tipos de pista#
| Pista | Controla |
|---|---|
| Animation Track | La animación de un objeto (reutiliza clips o graba dentro) |
| Cinemachine Track | Los cambios y mezclas entre cámaras virtuales |
| Audio Track | Música y efectos, sincronizados al frame |
| Activation Track | Enciende/apaga un objeto durante un tramo |
| Signal Track | Dispara eventos hacia tu código en un instante |
| Control Track | Reproduce otras Timelines o sistemas de partículas |
Arrastras los objetos a sus pistas y colocas los clips en la posición temporal que quieras. Todo se reproduce coordinado.
La combinación estrella para cinemáticas: una Cinemachine Track te deja poner varias cámaras virtuales y fundir entre ellas a lo largo del tiempo (un plano general, corte a primer plano, travelling...). Es como dirigir con cortes de cámara profesionales, sin programar nada.
Disparar código: las Signals#
Una cinemática casi siempre necesita "avisar" al juego: al terminar la intro, dar el control al jugador; a mitad, otorgar un objeto. Eso se hace con Signals:
- Añade una Signal Track y coloca un marcador Signal Emitter en el instante deseado.
- En el objeto, un Signal Receiver conecta esa señal con un método (como un evento de UI):
using UnityEngine;
public class FinCinematica : MonoBehaviour
{
// La conectas al Signal Receiver en el instante que quieras
public void DarControlAlJugador()
{
// activar el input del jugador, cambiar de estado de juego, etc.
Debug.Log("Cinemática terminada");
}
}Así el código y la cinemática quedan sincronizados sin adivinar tiempos.
Reproducirla desde el juego#
Por defecto una Timeline con Play On Awake arranca sola. Para lanzarla cuando tú quieras (al entrar en una sala, al pulsar un botón):
using UnityEngine;
using UnityEngine.Playables;
public class LanzarCinematica : MonoBehaviour
{
[SerializeField] private PlayableDirector director;
public void Reproducir() => director.Play();
}Timeline brilla en secuencias predefinidas (cinemáticas, intros, scripted events). No es para la lógica dinámica del juego (que reacciona al jugador en tiempo real): eso son scripts, máquinas de estados y físicas. Usa cada herramienta para lo suyo.
Errores frecuentes#
- Usar Timeline para lógica de gameplay dinámica (usa scripts).
- Sincronizar el fin de la cinemática con un
WaitForSecondsen vez de una Signal. - Olvidar quitar el control al jugador durante la cinemática (y que se mueva "por debajo").
- No usar Cinemachine para los cortes de cámara y acabar animando la cámara a mano.
- Dejar Play On Awake activo cuando querías lanzarla por código.
Ponte a prueba#
Resumen#
Timeline coreografía secuencias guionizadas en pistas sincronizadas (Animation, Cinemachine, Audio, Activation, Signal, Control): montas cinemáticas e intros como en un editor de vídeo. Combínala con Cinemachine para los cortes de cámara y con Signals para disparar tu código en el instante justo. Se lanza con el Playable Director (director.Play()). Úsala para lo predefinido, no para el gameplay dinámico. Los clips los creas con la Animation window.