Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

AnimationNodeStateMachineTransition

繼承: Resource < RefCounted < Object

AnimationNodeStateMachine 內連接兩個 AnimationRootNode 的轉場。

說明

使用 AnimationNodeStateMachinePlayback.travel() 時所產生的路徑僅限於由 AnimationNodeStateMachineTransition 連接的節點。

可對轉場的時機與條件進行細部設定。

教學

屬性

StringName

advance_condition

&""

String

advance_expression

""

AdvanceMode

advance_mode

1

bool

break_loop_at_end

false

int

priority

1

bool

reset

true

SwitchMode

switch_mode

0

Curve

xfade_curve

float

xfade_time

0.0


訊號

advance_condition_changed() 🔗

advance_condition 變更時觸發。


列舉

enum SwitchMode: 🔗

SwitchMode SWITCH_MODE_IMMEDIATE = 0

立即切換到下一狀態,並將目前狀態與新狀態開頭進行混合。

SwitchMode SWITCH_MODE_SYNC = 1

立即切換到下一狀態,但會將新狀態定位到舊狀態的播放位置。

SwitchMode SWITCH_MODE_AT_END = 2

等待目前狀態播放結束後,切換到下一狀態動畫的開頭。


enum AdvanceMode: 🔗

AdvanceMode ADVANCE_MODE_DISABLED = 0

停用此轉場。

AdvanceMode ADVANCE_MODE_ENABLED = 1

僅於 AnimationNodeStateMachinePlayback.travel() 執行時使用此轉場。

AdvanceMode ADVANCE_MODE_AUTO = 2

advance_conditionadvance_expression(如已設定)皆為 true,則自動使用此轉場。


屬性說明

StringName advance_condition = &"" 🔗

設定此條件後即可開啟自動前進。指定名稱將成為 AnimationTree 上的布林參數,可透過程式碼控制(參見 使用 AnimationTree)。例如,若 AnimationTree.tree_rootAnimationNodeStateMachine,且 advance_condition 設為 "idle"

$animation_tree.set("parameters/conditions/idle", is_on_floor and (linear_velocity.x == 0))

String advance_expression = "" 🔗

  • void set_advance_expression(value: String)

  • String get_advance_expression()

可使用運算式作為狀態機轉場條件,讓狀態切換的條件更為複雜,也能透過腳本程式碼介面創建更具彈性的複雜狀態機。


AdvanceMode advance_mode = 1 🔗

決定本轉場的啟用方式:可停用、在呼叫 AnimationNodeStateMachinePlayback.travel() 時啟用,或當 advance_conditionadvance_expression(若已設定)皆為 true 時自動觸發。


bool break_loop_at_end = false 🔗

  • void set_break_loop_at_end(value: bool)

  • bool is_loop_broken_at_end()

如果為 true,即使動畫設定為循環,也會在本迴圈結束時中斷迴圈以進行轉場。


int priority = 1 🔗

  • void set_priority(value: int)

  • int get_priority()

使用 AnimationNodeStateMachinePlayback.travel() 或將 advance_mode 設為 ADVANCE_MODE_AUTO 行進時,優先選擇較低優先順序的轉場。


bool reset = true 🔗

  • void set_reset(value: bool)

  • bool is_reset()

若為 true,切換時目標動畫會從開頭開始播放。


SwitchMode switch_mode = 0 🔗

轉場類型。


Curve xfade_curve 🔗

  • void set_xfade_curve(value: Curve)

  • Curve get_xfade_curve()

緩動曲線,可更細緻控制本狀態與下一狀態之間的交叉淡入淡出。應為單位 Curve


float xfade_time = 0.0 🔗

  • void set_xfade_time(value: float)

  • float get_xfade_time()

此狀態與下一狀態之間的交叉淡入淡出時間。

注意: AnimationNodeStateMachine 會在淡入開始後立即將目前狀態切換至下一個狀態。剩餘的精確時間只能從主要動畫推算。當 AnimationNodeOutput 被視為最上游時,xfade_time 不會因下游 delta 而縮放。另請參閱 AnimationNodeOneShot.fadeout_time