States
Un state es una instantánea con nombre de todo lo que un objeto es en ese momento: dónde está, de qué color, si es visible, qué animación tiene seleccionada.
Cambia a un state y el objeto vuelve a ser esa instantánea. Esa es toda la función, y sustituye una cantidad sorprendente de lógica escrita a mano.
Cuándo recurrir a ellos
| Quieres | Los states son… |
|---|---|
| Un interruptor: encendido y apagado | exactamente lo indicado |
| Una puerta: cerrada, abierta, bloqueada | exactamente lo indicado |
| Un producto en tres combinaciones de color | exactamente lo indicado |
| Un personaje recorriendo un camino | no es eso — eso es animación |
| Algo que cambia en una cantidad calculada | no es eso — eso es un patch o un script |
La regla práctica: un número fijo de situaciones con nombre es un state. Todo lo continuo es animación.
Construirlos
Añade un componente States a un objeto y luego añade un state. Registra el objeto tal y como está ahora mismo.
Para construir el siguiente: añade un segundo state y luego cambia el objeto mientras ese state está seleccionado. Colócalo, recolorealo, ocúltalo: el state va capturando sobre la marcha.
Mientras hay un state seleccionado, editar el objeto edita la instantánea de ese state, no el objeto en sí.
Eso es exactamente lo que quieres al construir states, y profundamente confuso cuando habías olvidado que había uno seleccionado y te preguntabas por qué tu cambio «no se quedó» al cambiar.
Cambiar entre ellos
Desde un evento, usa el paso Set state. Acepta el state y, opcionalmente, una duración y un easing.
Con una duración, el cambio se interpola: el objeto se desliza desde donde esté hasta la instantánea en lugar de saltar. Ese único campo convierte un cambio de state en una animación que no tuviste que crear.
| Desde dónde cambias | Cómo |
|---|---|
| Un evento | el paso Set state |
| Un patch | el nodo set_states |
| Un script | escribir activeStateId en el componente States |
Reaccionar a un cambio
En el objeto cuyo state cambió se disparan dos disparadores:
| Disparador | Se dispara cuando |
|---|---|
| State active | el objeto entró en el state que elegiste |
| State inactive | salió de ese state |
Cada evento indica qué state está vigilando, así que un mismo objeto puede reaccionar distinto a cada uno de los suyos. Así es como una puerta reproduce un sonido al abrirse y otro al cerrarse sin ninguna condición.
A diferencia de un toque, un cambio de state no sube por la jerarquía.
Cambiar un par de cosas sin un state
A veces quieres «como ahora, pero rojo» sin definir un state entero para ello. Para eso está el paso Override properties: aplica un conjunto puntual de valores como state temporal, con la misma duración y el mismo easing.
Úsalo para énfasis puntuales (un resaltado al pasar por encima, un destello al recibir daño) y reserva los states de verdad para situaciones que el objeto realmente tiene.
Qué abarca un state
Una instantánea guarda los componentes del objeto, así que posición, rotación, escala, material, visibilidad y lo demás viajan juntos.
No captura a los hijos. Para cambiar un grupo, dale a cada objeto sus propios states y cámbialos desde un mismo evento: los destinos del paso admiten una lista.
Dónde pueden pillarte
- Un state que quedó seleccionado en el editor absorbe tus ediciones en silencio. Comprueba cuál está activo antes de preguntarte por qué un objeto se revierte.
- States y animación en el mismo objeto pelean, como dos mecanismos de animación cualesquiera. Elige uno.
- Quitar un componente lo borra de todos los states que lo tenían.
- Si el state seleccionado ya no existe, se usa el primero.
Siguiente: Patches