Macchine a stati dell'editor grafico

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Una macchina a stati combina nodi di animazione in stati nominati, come Idle, Walk, Run e Jump. Riproduce lo stato attivo e si fonde in un altro stato quando una condizione di transizione viene valutata come true. Utilizza una macchina a stati per definire quali animazioni possono seguire l'una all'altra senza scrivere logica di transizione in Luau.

Ogni stato si collega a un input sulla macchina a stati. Uno stato può essere un clip, un nodo di fusione o un'altra macchina a stati. La macchina a stati restituisce la posa di animazione attiva o una fusione tra due pose se in transizione, che colleghi al nodo successivo nel grafo.

Requisiti

Prima di creare una macchina a stati, familiarizza con l'Animation Graph Editor, inclusi come aprirlo e creare un grafo di animazione.

Crea una macchina a stati

Il seguente esempio utilizza tre stati da JumpFallLandRunExample: Locomotion, Fall e LandIdle. Il personaggio si muove normalmente, passa a un'animazione di caduta quando è in aria e riproduce un'animazione di atterraggio prima di tornare alla locomozione. Questi passaggi si concentrano sulla macchina a stati; inizia con i nodi di animazione per locomozione, caduta e atterraggio.

  1. Nell'Editor Grafico, fai clic con il tasto destro e seleziona Inserisci Nodo ⟩ Macchina a Stati.

    Menu contestuale dell'Editor Grafico con il sottomenu Inserisci Nodo aperto e Macchina a Stati selezionata.
  2. Sul nodo della macchina a stati, fai clic su Apri. Nella vista Macchina a Stati, utilizza Crea Stato per aggiungere tre stati chiamati Locomotion, Fall e LandIdle.

    Vista Macchina a Stati con il pulsante Crea Stato e i nodi Entry e Any.
  3. Fai clic su Torna al Grafo e collega i tuoi nodi di animazione agli input corrispondenti della macchina a stati:

    • Locomotion: Collega la tua animazione di locomozione. Il grafo di riferimento utilizza un Blend1DNode chiamato IdleRunBlend per fondere le animazioni di inattività e corsa in base a Speed.
    • Fall: Collega un ClipNode di caduta e imposta Modalità di Riproduzione su Enum.AnimationNodePlayMode|OnceAndHold, in modo che mantenga la sua posa finale fino a quando il personaggio non atterra.
    • LandIdle: Collega un clip di atterraggio e imposta Modalità di Riproduzione su Enum.AnimationNodePlayMode|OnceAndHold, in modo che possa terminare e tornare alla locomozione.

    Collega l'output della macchina a stati all'input Pose di Graph Output.

    Nodi IdleRunBlend, Fall e LandIdle collegati agli input Locomotion, Fall e LandIdle di un nodo Macchina a Stati, il cui output è collegato a Graph Output.
  4. Apri di nuovo la vista Macchina a Stati e trascina una transizione da (Entry) a Locomotion. La macchina a stati inizia in questo stato quando il grafo inizia.

    Nodo di Entry collegato allo stato Locomotion.
  5. Aggiungi un parametro booleano del grafo chiamato Grounded e impostalo su true. Questo parametro indica se il personaggio è a terra.

  6. Aggiungi le seguenti transizioni trascinando una connessione dallo stato sorgente allo stato di destinazione, quindi configura ciascuna transizione:

    • Locomotion a Fall: Imposta Aspetta Per su Espressione, Espressione su not Grounded, e Lunghezza su 0.2 secondi. L'animazione di caduta inizia quando il personaggio lascia il suolo.
    • Fall a LandIdle: Imposta Aspetta Per su Espressione, Espressione su Grounded, e Lunghezza su 0.1 secondi. L'animazione di atterraggio inizia quando il personaggio tocca il suolo.
    • LandIdle a Locomotion: Imposta Aspetta Per su Finito, Quando su Enum.AnimationNodeTransitionWhen|BeforeFinished, e Lunghezza su 0.2 secondi. La macchina a stati inizia a fondere di nuovo verso la locomozione durante gli ultimi 0.2 secondi dell'animazione di atterraggio.
    Impostazioni di transizione da LandIdle a Locomotion, con Lunghezza impostata su 0.2, Curva su Lineare, Aspetta Per su Finito e Quando su Prima di Finire.
  7. Lascia Curva come predefinito (Linear) per tutte e tre le transizioni. Visualizza in anteprima il grafo e cambia Grounded su false per entrare in Fall, quindi torna a true per riprodurre LandIdle e tornare a Locomotion.

  8. Aggiorna Grounded dal tuo codice di gioco mentre il personaggio lascia e tocca il suolo. Se la tua fusione di locomozione utilizza Speed, aggiorna quel parametro mentre il personaggio si muove. Per il flusso di lavoro dei parametri, vedi integrazione API.

  9. Estendi la macchina a stati con salti e stati di atterraggio aggiuntivi per creare il grafo di movimento completo. JumpFallLandRunExample include salti separati per stare in piedi e correre, oltre a diversi atterraggi basati su movimento e velocità di caduta.

Proprietà della macchina a stati

Proprietà del nodo della macchina a stati

Input
  • State1...StateN: I nodi di animazione che definiscono ciascuno stato. Il nome dello stato deve corrispondere al nome dell'input al nodo della macchina a stati.
Proprietà
ProprietàTipoDescrizione
EntryStateObjectValueUn ObjectValue il cui Value punta al AnimationNodeDefinition per lo stato che è attivo quando il grafo inizia.
Dati evento
  • Gestione eventi: Gli eventi dallo stato attivo passano attraverso con il loro peso invariato.
  • Emissione eventi: Passa attraverso eventi dallo stato attivo solo. Durante una transizione, l'emissione di eventi segue le regole globali degli eventi.

Proprietà di transizione

Una transizione ha uno o più stati sorgente, uno stato di destinazione e una condizione. Quando lo stato attivo corrisponde a uno stato sorgente, la macchina a stati controlla la condizione. Si fonde nello stato di destinazione quando la condizione viene valutata come true.

Aspetta Per determina l'interfaccia della condizione di transizione. Seleziona Espressione (Enum.AnimationNodeWaitFor|Trigger) per visualizzare una casella di Espressione. Un Espressione può fare riferimento direttamente a un parametro booleano del grafo, come ShouldJump, o valutare una condizione, come Speed >= 12. Seleziona Finito (Enum.AnimationNodeWaitFor|Finished) per visualizzare il menu a discesa Quando.

Se più di una transizione ha una Espressione vera, la macchina a stati valuta prima la transizione con il valore di Priorità più alto. Quando le priorità sono le stesse, seleziona una transizione a caso. Assegna priorità diverse alle transizioni in competizione per rendere il risultato prevedibile.

ProprietàTipoDescrizione
FromObjectValueUn ObjectValue il cui Value punta al AnimationNodeDefinition per lo stato che può iniziare la transizione. Lascia questa proprietà non impostata per una transizione (Any).
ToObjectValueUn ObjectValue il cui Value punta al AnimationNodeDefinition per lo stato di destinazione.
WaitForEnum.AnimationNodeWaitForDetermina quale interfaccia della condizione di transizione appare. Enum.AnimationNodeWaitFor|Trigger visualizza la casella di Espressione. Enum.AnimationNodeWaitFor|Finished visualizza il menu a discesa Quando.
QuandoEnum.AnimationNodeTransitionWhenDisponibile quando Aspetta Per è Finito. Seleziona Enum.AnimationNodeTransitionWhen|Finished per iniziare dopo che lo stato sorgente è finito, o Enum.AnimationNodeTransitionWhen|BeforeFinished per iniziare a fondere un Durata prima che lo stato sorgente finisca.
EspressioneStringaDisponibile quando Aspetta Per è Espressione. Un parametro booleano del grafo o un'espressione che, quando viene valutata come true, inizia la transizione. Vedi Espressione per cosa è supportato.
PrioritàNumeroL'ordine utilizzato quando più di una Espressione è vera. Valori più alti hanno la precedenza. I valori validi vanno da 0 a 65.535.
DurataNumeroIl tempo, in secondi, per fondere nello stato di destinazione. Il predefinito è 0.15 secondi.
CurvaEnum.PoseEasingStyleIl tipo di easing utilizzato durante la fusione. Solo Linear e CubicV2 sono supportati. Il predefinito è Linear.
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.