123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- :github_url: hide
- .. DO NOT EDIT THIS FILE!!!
- .. Generated automatically from Godot engine sources.
- .. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py.
- .. XML source: https://github.com/godotengine/godot/tree/4.2/doc/classes/AnimationNodeStateMachine.xml.
- .. _class_AnimationNodeStateMachine:
- AnimationNodeStateMachine
- =========================
- **Inherits:** :ref:`AnimationRootNode<class_AnimationRootNode>` **<** :ref:`AnimationNode<class_AnimationNode>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
- A state machine with multiple :ref:`AnimationRootNode<class_AnimationRootNode>`\ s, used by :ref:`AnimationTree<class_AnimationTree>`.
- .. rst-class:: classref-introduction-group
- Description
- -----------
- Contains multiple :ref:`AnimationRootNode<class_AnimationRootNode>`\ s representing animation states, connected in a graph. State transitions can be configured to happen automatically or via code, using a shortest-path algorithm. Retrieve the :ref:`AnimationNodeStateMachinePlayback<class_AnimationNodeStateMachinePlayback>` object from the :ref:`AnimationTree<class_AnimationTree>` node to control it programmatically.
- \ **Example:**\
- .. tabs::
- .. code-tab:: gdscript
- var state_machine = $AnimationTree.get("parameters/playback")
- state_machine.travel("some_state")
- .. code-tab:: csharp
- var stateMachine = GetNode<AnimationTree>("AnimationTree").Get("parameters/playback") as AnimationNodeStateMachinePlayback;
- stateMachine.Travel("some_state");
- .. rst-class:: classref-introduction-group
- Tutorials
- ---------
- - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
- .. rst-class:: classref-reftable-group
- Properties
- ----------
- .. table::
- :widths: auto
- +--------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+
- | :ref:`bool<class_bool>` | :ref:`allow_transition_to_self<class_AnimationNodeStateMachine_property_allow_transition_to_self>` | ``false`` |
- +--------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+
- | :ref:`bool<class_bool>` | :ref:`reset_ends<class_AnimationNodeStateMachine_property_reset_ends>` | ``false`` |
- +--------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+
- | :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` | :ref:`state_machine_type<class_AnimationNodeStateMachine_property_state_machine_type>` | ``0`` |
- +--------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+
- .. rst-class:: classref-reftable-group
- Methods
- -------
- .. table::
- :widths: auto
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_node<class_AnimationNodeStateMachine_method_add_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`add_transition<class_AnimationNodeStateMachine_method_add_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` transition **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`Vector2<class_Vector2>` | :ref:`get_graph_offset<class_AnimationNodeStateMachine_method_get_graph_offset>` **(** **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`AnimationNode<class_AnimationNode>` | :ref:`get_node<class_AnimationNodeStateMachine_method_get_node>` **(** :ref:`StringName<class_StringName>` name **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`StringName<class_StringName>` | :ref:`get_node_name<class_AnimationNodeStateMachine_method_get_node_name>` **(** :ref:`AnimationNode<class_AnimationNode>` node **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`Vector2<class_Vector2>` | :ref:`get_node_position<class_AnimationNodeStateMachine_method_get_node_position>` **(** :ref:`StringName<class_StringName>` name **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` | :ref:`get_transition<class_AnimationNodeStateMachine_method_get_transition>` **(** :ref:`int<class_int>` idx **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`get_transition_count<class_AnimationNodeStateMachine_method_get_transition_count>` **(** **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`StringName<class_StringName>` | :ref:`get_transition_from<class_AnimationNodeStateMachine_method_get_transition_from>` **(** :ref:`int<class_int>` idx **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`StringName<class_StringName>` | :ref:`get_transition_to<class_AnimationNodeStateMachine_method_get_transition_to>` **(** :ref:`int<class_int>` idx **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`has_node<class_AnimationNodeStateMachine_method_has_node>` **(** :ref:`StringName<class_StringName>` name **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`bool<class_bool>` | :ref:`has_transition<class_AnimationNodeStateMachine_method_has_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** |const| |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`remove_node<class_AnimationNodeStateMachine_method_remove_node>` **(** :ref:`StringName<class_StringName>` name **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`remove_transition<class_AnimationNodeStateMachine_method_remove_transition>` **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`remove_transition_by_index<class_AnimationNodeStateMachine_method_remove_transition_by_index>` **(** :ref:`int<class_int>` idx **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`rename_node<class_AnimationNodeStateMachine_method_rename_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` new_name **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`replace_node<class_AnimationNodeStateMachine_method_replace_node>` **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`set_graph_offset<class_AnimationNodeStateMachine_method_set_graph_offset>` **(** :ref:`Vector2<class_Vector2>` offset **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`set_node_position<class_AnimationNodeStateMachine_method_set_node_position>` **(** :ref:`StringName<class_StringName>` name, :ref:`Vector2<class_Vector2>` position **)** |
- +---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Enumerations
- ------------
- .. _enum_AnimationNodeStateMachine_StateMachineType:
- .. rst-class:: classref-enumeration
- enum **StateMachineType**:
- .. _class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_ROOT:
- .. rst-class:: classref-enumeration-constant
- :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **STATE_MACHINE_TYPE_ROOT** = ``0``
- Seeking to the beginning is treated as playing from the start state. Transition to the end state is treated as exiting the state machine.
- .. _class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_NESTED:
- .. rst-class:: classref-enumeration-constant
- :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **STATE_MACHINE_TYPE_NESTED** = ``1``
- Seeking to the beginning is treated as seeking to the beginning of the animation in the current state. Transition to the end state, or the absence of transitions in each state, is treated as exiting the state machine.
- .. _class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_GROUPED:
- .. rst-class:: classref-enumeration-constant
- :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **STATE_MACHINE_TYPE_GROUPED** = ``2``
- This is a grouped state machine that can be controlled from a parent state machine. It does not work independently. There must be a state machine with :ref:`state_machine_type<class_AnimationNodeStateMachine_property_state_machine_type>` of :ref:`STATE_MACHINE_TYPE_ROOT<class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_ROOT>` or :ref:`STATE_MACHINE_TYPE_NESTED<class_AnimationNodeStateMachine_constant_STATE_MACHINE_TYPE_NESTED>` in the parent or ancestor.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Property Descriptions
- ---------------------
- .. _class_AnimationNodeStateMachine_property_allow_transition_to_self:
- .. rst-class:: classref-property
- :ref:`bool<class_bool>` **allow_transition_to_self** = ``false``
- .. rst-class:: classref-property-setget
- - void **set_allow_transition_to_self** **(** :ref:`bool<class_bool>` value **)**
- - :ref:`bool<class_bool>` **is_allow_transition_to_self** **(** **)**
- If ``true``, allows teleport to the self state with :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`. When the reset option is enabled in :ref:`AnimationNodeStateMachinePlayback.travel<class_AnimationNodeStateMachinePlayback_method_travel>`, the animation is restarted. If ``false``, nothing happens on the teleportation to the self state.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_property_reset_ends:
- .. rst-class:: classref-property
- :ref:`bool<class_bool>` **reset_ends** = ``false``
- .. rst-class:: classref-property-setget
- - void **set_reset_ends** **(** :ref:`bool<class_bool>` value **)**
- - :ref:`bool<class_bool>` **are_ends_reset** **(** **)**
- If ``true``, treat the cross-fade to the start and end nodes as a blend with the RESET animation.
- In most cases, when additional cross-fades are performed in the parent :ref:`AnimationNode<class_AnimationNode>` of the state machine, setting this property to ``false`` and matching the cross-fade time of the parent :ref:`AnimationNode<class_AnimationNode>` and the state machine's start node and end node gives good results.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_property_state_machine_type:
- .. rst-class:: classref-property
- :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **state_machine_type** = ``0``
- .. rst-class:: classref-property-setget
- - void **set_state_machine_type** **(** :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` value **)**
- - :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>` **get_state_machine_type** **(** **)**
- This property can define the process of transitions for different use cases. See also :ref:`StateMachineType<enum_AnimationNodeStateMachine_StateMachineType>`.
- .. rst-class:: classref-section-separator
- ----
- .. rst-class:: classref-descriptions-group
- Method Descriptions
- -------------------
- .. _class_AnimationNodeStateMachine_method_add_node:
- .. rst-class:: classref-method
- void **add_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node, :ref:`Vector2<class_Vector2>` position=Vector2(0, 0) **)**
- Adds a new animation node to the graph. The ``position`` is used for display in the editor.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_add_transition:
- .. rst-class:: classref-method
- void **add_transition** **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to, :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` transition **)**
- Adds a transition between the given animation nodes.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_graph_offset:
- .. rst-class:: classref-method
- :ref:`Vector2<class_Vector2>` **get_graph_offset** **(** **)** |const|
- Returns the draw offset of the graph. Used for display in the editor.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_node:
- .. rst-class:: classref-method
- :ref:`AnimationNode<class_AnimationNode>` **get_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
- Returns the animation node with the given name.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_node_name:
- .. rst-class:: classref-method
- :ref:`StringName<class_StringName>` **get_node_name** **(** :ref:`AnimationNode<class_AnimationNode>` node **)** |const|
- Returns the given animation node's name.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_node_position:
- .. rst-class:: classref-method
- :ref:`Vector2<class_Vector2>` **get_node_position** **(** :ref:`StringName<class_StringName>` name **)** |const|
- Returns the given animation node's coordinates. Used for display in the editor.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_transition:
- .. rst-class:: classref-method
- :ref:`AnimationNodeStateMachineTransition<class_AnimationNodeStateMachineTransition>` **get_transition** **(** :ref:`int<class_int>` idx **)** |const|
- Returns the given transition.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_transition_count:
- .. rst-class:: classref-method
- :ref:`int<class_int>` **get_transition_count** **(** **)** |const|
- Returns the number of connections in the graph.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_transition_from:
- .. rst-class:: classref-method
- :ref:`StringName<class_StringName>` **get_transition_from** **(** :ref:`int<class_int>` idx **)** |const|
- Returns the given transition's start node.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_get_transition_to:
- .. rst-class:: classref-method
- :ref:`StringName<class_StringName>` **get_transition_to** **(** :ref:`int<class_int>` idx **)** |const|
- Returns the given transition's end node.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_has_node:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **has_node** **(** :ref:`StringName<class_StringName>` name **)** |const|
- Returns ``true`` if the graph contains the given animation node.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_has_transition:
- .. rst-class:: classref-method
- :ref:`bool<class_bool>` **has_transition** **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)** |const|
- Returns ``true`` if there is a transition between the given animation nodes.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_remove_node:
- .. rst-class:: classref-method
- void **remove_node** **(** :ref:`StringName<class_StringName>` name **)**
- Deletes the given animation node from the graph.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_remove_transition:
- .. rst-class:: classref-method
- void **remove_transition** **(** :ref:`StringName<class_StringName>` from, :ref:`StringName<class_StringName>` to **)**
- Deletes the transition between the two specified animation nodes.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_remove_transition_by_index:
- .. rst-class:: classref-method
- void **remove_transition_by_index** **(** :ref:`int<class_int>` idx **)**
- Deletes the given transition by index.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_rename_node:
- .. rst-class:: classref-method
- void **rename_node** **(** :ref:`StringName<class_StringName>` name, :ref:`StringName<class_StringName>` new_name **)**
- Renames the given animation node.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_replace_node:
- .. rst-class:: classref-method
- void **replace_node** **(** :ref:`StringName<class_StringName>` name, :ref:`AnimationNode<class_AnimationNode>` node **)**
- .. container:: contribute
- There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_set_graph_offset:
- .. rst-class:: classref-method
- void **set_graph_offset** **(** :ref:`Vector2<class_Vector2>` offset **)**
- Sets the draw offset of the graph. Used for display in the editor.
- .. rst-class:: classref-item-separator
- ----
- .. _class_AnimationNodeStateMachine_method_set_node_position:
- .. rst-class:: classref-method
- void **set_node_position** **(** :ref:`StringName<class_StringName>` name, :ref:`Vector2<class_Vector2>` position **)**
- Sets the animation node's coordinates. Used for display in the editor.
- .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
- .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
- .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
- .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
- .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
- .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
- .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
|