Files
godot-docs-l10n/classes/zh_Hant/class_animationnodestatemachinetransition.rst

328 lines
15 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

: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 (無回傳值。)`