Files
godot-docs-l10n/classes/zh_Hans/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>` 不会根据下游增量进行缩放。另见 :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 (无返回值。)`