mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
328 lines
15 KiB
ReStructuredText
328 lines
15 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_AnimationNodeStateMachineTransition:
|
||
|
||
AnimationNodeStateMachineTransition
|
||
===================================
|
||
|
||
**繼承:** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
|
||
|
||
:ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` 內連接兩個 :ref:`AnimationRootNode<class_AnimationRootNode>` 的轉場。
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
說明
|
||
----
|
||
|
||
使用 :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` 時所產生的路徑僅限於由 **AnimationNodeStateMachineTransition** 連接的節點。
|
||
|
||
可對轉場的時機與條件進行細部設定。
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
教學
|
||
----
|
||
|
||
- :doc:`使用 AnimationTree <../tutorials/animation/animation_tree>`
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
屬性
|
||
----
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`StringName<class_StringName>` | :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` | ``&""`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`String<class_String>` | :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>` | ``""`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` | :ref:`advance_mode<class_AnimationNodeStateMachineTransition_property_advance_mode>` | ``1`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`bool<class_bool>` | :ref:`break_loop_at_end<class_AnimationNodeStateMachineTransition_property_break_loop_at_end>` | ``false`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`int<class_int>` | :ref:`priority<class_AnimationNodeStateMachineTransition_property_priority>` | ``1`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`bool<class_bool>` | :ref:`reset<class_AnimationNodeStateMachineTransition_property_reset>` | ``true`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` | :ref:`switch_mode<class_AnimationNodeStateMachineTransition_property_switch_mode>` | ``0`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`Curve<class_Curve>` | :ref:`xfade_curve<class_AnimationNodeStateMachineTransition_property_xfade_curve>` | |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`float<class_float>` | :ref:`xfade_time<class_AnimationNodeStateMachineTransition_property_xfade_time>` | ``0.0`` |
|
||
+--------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
訊號
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_signal_advance_condition_changed:
|
||
|
||
.. rst-class:: classref-signal
|
||
|
||
**advance_condition_changed**\ (\ ) :ref:`🔗<class_AnimationNodeStateMachineTransition_signal_advance_condition_changed>`
|
||
|
||
當 :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` 變更時觸發。
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
列舉
|
||
----
|
||
|
||
.. _enum_AnimationNodeStateMachineTransition_SwitchMode:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **SwitchMode**: :ref:`🔗<enum_AnimationNodeStateMachineTransition_SwitchMode>`
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_SWITCH_MODE_IMMEDIATE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **SWITCH_MODE_IMMEDIATE** = ``0``
|
||
|
||
立即切換到下一狀態,並將目前狀態與新狀態開頭進行混合。
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_SWITCH_MODE_SYNC:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **SWITCH_MODE_SYNC** = ``1``
|
||
|
||
立即切換到下一狀態,但會將新狀態定位到舊狀態的播放位置。
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_SWITCH_MODE_AT_END:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **SWITCH_MODE_AT_END** = ``2``
|
||
|
||
等待目前狀態播放結束後,切換到下一狀態動畫的開頭。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _enum_AnimationNodeStateMachineTransition_AdvanceMode:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **AdvanceMode**: :ref:`🔗<enum_AnimationNodeStateMachineTransition_AdvanceMode>`
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_DISABLED:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **ADVANCE_MODE_DISABLED** = ``0``
|
||
|
||
停用此轉場。
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_ENABLED:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **ADVANCE_MODE_ENABLED** = ``1``
|
||
|
||
僅於 :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` 執行時使用此轉場。
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_AUTO:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **ADVANCE_MODE_AUTO** = ``2``
|
||
|
||
若 :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` 與 :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>`\ (如已設定)皆為 ``true``\ ,則自動使用此轉場。
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
屬性說明
|
||
--------
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_advance_condition:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`StringName<class_StringName>` **advance_condition** = ``&""`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_condition>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_advance_condition**\ (\ value\: :ref:`StringName<class_StringName>`\ )
|
||
- :ref:`StringName<class_StringName>` **get_advance_condition**\ (\ )
|
||
|
||
設定此條件後即可開啟自動前進。指定名稱將成為 :ref:`AnimationTree<class_AnimationTree>` 上的布林參數,可透過程式碼控制(參見 `使用 AnimationTree <../tutorials/animation/animation_tree.html#controlling-from-code>`__\ )。例如,若 :ref:`AnimationTree.tree_root<class_AnimationTree_property_tree_root>` 為 :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>`\ ,且 :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` 設為 ``"idle"``\ :
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
$animation_tree.set("parameters/conditions/idle", is_on_floor and (linear_velocity.x == 0))
|
||
|
||
.. code-tab:: csharp
|
||
|
||
GetNode<AnimationTree>("animation_tree").Set("parameters/conditions/idle", IsOnFloor && (LinearVelocity.X == 0));
|
||
|
||
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_advance_expression:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`String<class_String>` **advance_expression** = ``""`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_expression>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_advance_expression**\ (\ value\: :ref:`String<class_String>`\ )
|
||
- :ref:`String<class_String>` **get_advance_expression**\ (\ )
|
||
|
||
可使用運算式作為狀態機轉場條件,讓狀態切換的條件更為複雜,也能透過腳本程式碼介面創建更具彈性的複雜狀態機。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_advance_mode:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **advance_mode** = ``1`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_advance_mode>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_advance_mode**\ (\ value\: :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>`\ )
|
||
- :ref:`AdvanceMode<enum_AnimationNodeStateMachineTransition_AdvanceMode>` **get_advance_mode**\ (\ )
|
||
|
||
決定本轉場的啟用方式:可停用、在呼叫 :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` 時啟用,或當 :ref:`advance_condition<class_AnimationNodeStateMachineTransition_property_advance_condition>` 與 :ref:`advance_expression<class_AnimationNodeStateMachineTransition_property_advance_expression>`\ (若已設定)皆為 ``true`` 時自動觸發。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_break_loop_at_end:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **break_loop_at_end** = ``false`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_break_loop_at_end>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_break_loop_at_end**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_loop_broken_at_end**\ (\ )
|
||
|
||
如果為 ``true``\ ,即使動畫設定為循環,也會在本迴圈結束時中斷迴圈以進行轉場。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_priority:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`int<class_int>` **priority** = ``1`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_priority>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_priority**\ (\ value\: :ref:`int<class_int>`\ )
|
||
- :ref:`int<class_int>` **get_priority**\ (\ )
|
||
|
||
使用 :ref:`AnimationNodeStateMachinePlayback.travel()<class_AnimationNodeStateMachinePlayback_method_travel>` 或將 :ref:`advance_mode<class_AnimationNodeStateMachineTransition_property_advance_mode>` 設為 :ref:`ADVANCE_MODE_AUTO<class_AnimationNodeStateMachineTransition_constant_ADVANCE_MODE_AUTO>` 行進時,優先選擇較低優先順序的轉場。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_reset:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **reset** = ``true`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_reset>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_reset**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_reset**\ (\ )
|
||
|
||
若為 ``true``\ ,切換時目標動畫會從開頭開始播放。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_switch_mode:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **switch_mode** = ``0`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_switch_mode>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_switch_mode**\ (\ value\: :ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>`\ )
|
||
- :ref:`SwitchMode<enum_AnimationNodeStateMachineTransition_SwitchMode>` **get_switch_mode**\ (\ )
|
||
|
||
轉場類型。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_xfade_curve:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Curve<class_Curve>` **xfade_curve** :ref:`🔗<class_AnimationNodeStateMachineTransition_property_xfade_curve>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_xfade_curve**\ (\ value\: :ref:`Curve<class_Curve>`\ )
|
||
- :ref:`Curve<class_Curve>` **get_xfade_curve**\ (\ )
|
||
|
||
緩動曲線,可更細緻控制本狀態與下一狀態之間的交叉淡入淡出。應為單位 :ref:`Curve<class_Curve>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_AnimationNodeStateMachineTransition_property_xfade_time:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **xfade_time** = ``0.0`` :ref:`🔗<class_AnimationNodeStateMachineTransition_property_xfade_time>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_xfade_time**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_xfade_time**\ (\ )
|
||
|
||
此狀態與下一狀態之間的交叉淡入淡出時間。
|
||
|
||
\ **注意:** :ref:`AnimationNodeStateMachine<class_AnimationNodeStateMachine>` 會在淡入開始後立即將目前狀態切換至下一個狀態。剩餘的精確時間只能從主要動畫推算。當 :ref:`AnimationNodeOutput<class_AnimationNodeOutput>` 被視為最上游時,\ :ref:`xfade_time<class_AnimationNodeStateMachineTransition_property_xfade_time>` 不會因下游 delta 而縮放。另請參閱 :ref:`AnimationNodeOneShot.fadeout_time<class_AnimationNodeOneShot_property_fadeout_time>`\ 。
|
||
|
||
.. |virtual| replace:: :abbr:`virtual (本方法通常需要使用者覆寫才能生效。)`
|
||
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
|
||
.. |const| replace:: :abbr:`const (本方法沒有副作用。不會修改該實例的任何成員變數。)`
|
||
.. |vararg| replace:: :abbr:`vararg (本方法除了這裡描述的參數外,還可以接受任意數量的參數。)`
|
||
.. |constructor| replace:: :abbr:`constructor (本方法用於建構一個型別。)`
|
||
.. |static| replace:: :abbr:`static (本方法無需實例即可呼叫,因此可以直接使用類別名稱呼叫。)`
|
||
.. |operator| replace:: :abbr:`operator (本方法描述將本型別作為左運算元時可用的有效運算子。)`
|
||
.. |bitfield| replace:: :abbr:`BitField (此值是由下列旗標組成的位元遮罩整數。)`
|
||
.. |void| replace:: :abbr:`void (無回傳值。)`
|