Saltar al contenido principal

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

QuieresLos states son…
Un interruptor: encendido y apagadoexactamente lo indicado
Una puerta: cerrada, abierta, bloqueadaexactamente lo indicado
Un producto en tres combinaciones de colorexactamente lo indicado
Un personaje recorriendo un caminono es eso — eso es animación
Algo que cambia en una cantidad calculadano 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.

Esta es la parte que confunde a la gente

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 cambiasCómo
Un eventoel paso Set state
Un patchel nodo set_states
Un scriptescribir activeStateId en el componente States

Reaccionar a un cambio

En el objeto cuyo state cambió se disparan dos disparadores:

DisparadorSe dispara cuando
State activeel objeto entró en el state que elegiste
State inactivesalió 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.

Se disparan en el propio objeto, no en sus padres

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.

Un state pertenece a un solo objeto

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