AnimationNodeStateMachineTransition
繼承: Resource < RefCounted < Object
AnimationNodeStateMachine 內連接兩個 AnimationRootNode 的轉場。
說明
使用 AnimationNodeStateMachinePlayback.travel() 時所產生的路徑僅限於由 AnimationNodeStateMachineTransition 連接的節點。
可對轉場的時機與條件進行細部設定。
教學
屬性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
訊號
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_condition 與 advance_expression(如已設定)皆為 true,則自動使用此轉場。
屬性說明
StringName advance_condition = &"" 🔗
void set_advance_condition(value: StringName)
StringName get_advance_condition()
設定此條件後即可開啟自動前進。指定名稱將成為 AnimationTree 上的布林參數,可透過程式碼控制(參見 使用 AnimationTree)。例如,若 AnimationTree.tree_root 為 AnimationNodeStateMachine,且 advance_condition 設為 "idle":
$animation_tree.set("parameters/conditions/idle", is_on_floor and (linear_velocity.x == 0))
GetNode<AnimationTree>("animation_tree").Set("parameters/conditions/idle", IsOnFloor && (LinearVelocity.X == 0));
String advance_expression = "" 🔗
可使用運算式作為狀態機轉場條件,讓狀態切換的條件更為複雜,也能透過腳本程式碼介面創建更具彈性的複雜狀態機。
AdvanceMode advance_mode = 1 🔗
void set_advance_mode(value: AdvanceMode)
AdvanceMode get_advance_mode()
決定本轉場的啟用方式:可停用、在呼叫 AnimationNodeStateMachinePlayback.travel() 時啟用,或當 advance_condition 與 advance_expression(若已設定)皆為 true 時自動觸發。
bool break_loop_at_end = false 🔗
如果為 true,即使動畫設定為循環,也會在本迴圈結束時中斷迴圈以進行轉場。
使用 AnimationNodeStateMachinePlayback.travel() 或將 advance_mode 設為 ADVANCE_MODE_AUTO 行進時,優先選擇較低優先順序的轉場。
若為 true,切換時目標動畫會從開頭開始播放。
SwitchMode switch_mode = 0 🔗
void set_switch_mode(value: SwitchMode)
SwitchMode get_switch_mode()
轉場類型。
緩動曲線,可更細緻控制本狀態與下一狀態之間的交叉淡入淡出。應為單位 Curve。
此狀態與下一狀態之間的交叉淡入淡出時間。
注意: AnimationNodeStateMachine 會在淡入開始後立即將目前狀態切換至下一個狀態。剩餘的精確時間只能從主要動畫推算。當 AnimationNodeOutput 被視為最上游時,xfade_time 不會因下游 delta 而縮放。另請參閱 AnimationNodeOneShot.fadeout_time。