Aller au contenu principal

States

Un state est un instantané nommé de tout ce qu'un objet est à cet instant : où il se tient, sa couleur, s'il est visible, quelle animation est sélectionnée.

Basculez sur un state et l'objet redevient cet instantané. C'est toute la fonctionnalité, et elle remplace une quantité surprenante de logique écrite à la main.

Quand y recourir

Vous voulezLes states sont…
Un interrupteur : allumé et éteintexactement ce qu'il faut
Une porte : fermée, ouverte, verrouilléeexactement ce qu'il faut
Un produit en trois colorisexactement ce qu'il faut
Un personnage qui suit un cheminà côté — c'est de l'animation
Quelque chose qui change d'une quantité calculéeà côté — c'est un patch ou un script

La règle : un nombre fixe de situations nommées, c'est un state. Tout ce qui est continu est une animation.

Les construire

Ajoutez un composant States à un objet, puis ajoutez un state. Il enregistre l'objet tel qu'il est à cet instant.

Pour construire le suivant : ajoutez un second state, puis modifiez l'objet pendant que ce state est sélectionné. Positionnez-le, changez sa couleur, masquez-le — le state capture au fur et à mesure.

C'est la partie qui déroute

Tant qu'un state est sélectionné, modifier l'objet modifie l'instantané de ce state, pas l'objet lui-même.

C'est exactement ce que vous voulez en construisant des states, et parfaitement déroutant quand vous aviez oublié qu'un state était sélectionné et vous demandiez pourquoi votre modification « n'a pas tenu » après un changement.

Basculer entre eux

Depuis un événement, utilisez l'étape Set state. Elle prend le state et, en option, une durée et un easing.

Avec une durée, le changement s'interpole — l'objet glisse depuis là où il est jusqu'à l'instantané au lieu de sauter. Ce seul champ transforme un changement de state en une animation que vous n'avez pas eu à écrire.

D'où vous basculezComment
Un événementl'étape Set state
Un patchle nœud set_states
Un scriptécrire activeStateId sur le composant States

Réagir à un changement

Deux déclencheurs se produisent sur l'objet dont le state a changé :

DéclencheurSe produit quand
State activel'objet est entré dans le state choisi
State inactiveil en est sorti

Chaque événement nomme quel state il surveille, un même objet peut donc réagir différemment à chacun des siens. C'est ainsi qu'une porte joue un son en s'ouvrant et un autre en se fermant, sans la moindre condition.

Ils se produisent sur l'objet lui-même, pas sur ses parents

Contrairement à un toucher, un changement de state ne remonte pas la hiérarchie.

Changer deux ou trois choses sans state

Parfois vous voulez « comme maintenant, mais en rouge » sans définir un state entier pour cela. C'est l'étape Override properties : elle applique un jeu de valeurs ponctuel comme un state temporaire, avec la même durée et le même easing.

Servez-vous-en pour des accents ponctuels (une surbrillance au survol, un flash aux dégâts) et gardez les vrais states pour les situations que l'objet a réellement.

Ce que couvre un state

Un instantané contient les composants de l'objet : position, rotation, échelle, matériau, visibilité et le reste voyagent donc ensemble.

Un state appartient à un seul objet

Il ne capture pas les enfants. Pour basculer un groupe, donnez à chaque objet ses propres states et basculez-les depuis un même événement — les cibles de l'étape acceptent une liste.

Là où ils peuvent vous piéger

  • Un state resté sélectionné dans l'éditeur absorbe discrètement vos modifications. Vérifiez lequel est actif avant de vous demander pourquoi un objet revient en arrière.
  • States et animation sur le même objet se battent, comme deux mécanismes d'animation quelconques. Choisissez-en un.
  • Retirer un composant l'efface de tous les states qui le contenaient.
  • Si le state sélectionné n'existe plus, c'est le premier qui est utilisé.

Suite : Patches