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.
Checking the stable version of the documentation...
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。