:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AnimationTree.xml. .. _class_AnimationTree: AnimationTree ============= **Inherits:** :ref:`Node` **<** :ref:`Object` A node to be used for advanced animation transitions in an :ref:`AnimationPlayer`. .. rst-class:: classref-introduction-group Description ----------- A node to be used for advanced animation transitions in an :ref:`AnimationPlayer`. \ **Note:** When linked with an :ref:`AnimationPlayer`, several properties and methods of the corresponding :ref:`AnimationPlayer` will not function as expected. Playback and transitions should be handled using only the **AnimationTree** and its constituent :ref:`AnimationNode`\ (s). The :ref:`AnimationPlayer` node should be used solely for adding, deleting, and editing animations. .. rst-class:: classref-introduction-group Tutorials --------- - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>` - `Third Person Shooter Demo `__ .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`bool` | :ref:`active` | ``false`` | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`NodePath` | :ref:`advance_expression_base_node` | ``NodePath(".")`` | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`NodePath` | :ref:`anim_player` | ``NodePath("")`` | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`AnimationProcessCallback` | :ref:`process_callback` | ``1`` | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`NodePath` | :ref:`root_motion_track` | ``NodePath("")`` | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ | :ref:`AnimationNode` | :ref:`tree_root` | | +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`_post_process_key_value` **(** :ref:`Animation` animation, :ref:`int` track, :ref:`Variant` value, :ref:`Object` object, :ref:`int` object_idx **)** |virtual| |const| | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`advance` **(** :ref:`float` delta **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector3` | :ref:`get_root_motion_position` **(** **)** |const| | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Quaternion` | :ref:`get_root_motion_rotation` **(** **)** |const| | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector3` | :ref:`get_root_motion_scale` **(** **)** |const| | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`rename_parameter` **(** :ref:`String` old_name, :ref:`String` new_name **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Signals ------- .. _class_AnimationTree_signal_animation_finished: .. rst-class:: classref-signal **animation_finished** **(** :ref:`StringName` anim_name **)** Notifies when an animation finished playing. \ **Note:** This signal is not emitted if an animation is looping or aborted. Also be aware of the possibility of unseen playback by sync and xfade. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_signal_animation_player_changed: .. rst-class:: classref-signal **animation_player_changed** **(** **)** Emitted when the :ref:`anim_player` is changed. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_signal_animation_started: .. rst-class:: classref-signal **animation_started** **(** :ref:`StringName` anim_name **)** Notifies when an animation starts playing. \ **Note:** This signal is not emitted if an animation is looping or playbacked from the middle. Also be aware of the possibility of unseen playback by sync and xfade. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_AnimationTree_AnimationProcessCallback: .. rst-class:: classref-enumeration enum **AnimationProcessCallback**: .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS: .. rst-class:: classref-enumeration-constant :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_PHYSICS** = ``0`` The animations will progress during the physics frame (i.e. :ref:`Node._physics_process`). .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE: .. rst-class:: classref-enumeration-constant :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_IDLE** = ``1`` The animations will progress during the idle frame (i.e. :ref:`Node._process`). .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL: .. rst-class:: classref-enumeration-constant :ref:`AnimationProcessCallback` **ANIMATION_PROCESS_MANUAL** = ``2`` The animations will only progress manually (see :ref:`advance`). .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_AnimationTree_property_active: .. rst-class:: classref-property :ref:`bool` **active** = ``false`` .. rst-class:: classref-property-setget - void **set_active** **(** :ref:`bool` value **)** - :ref:`bool` **is_active** **(** **)** If ``true``, the **AnimationTree** will be processing. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_property_advance_expression_base_node: .. rst-class:: classref-property :ref:`NodePath` **advance_expression_base_node** = ``NodePath(".")`` .. rst-class:: classref-property-setget - void **set_advance_expression_base_node** **(** :ref:`NodePath` value **)** - :ref:`NodePath` **get_advance_expression_base_node** **(** **)** The path to the :ref:`Node` used to evaluate the AnimationNode :ref:`Expression` if one is not explicitly specified internally. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_property_anim_player: .. rst-class:: classref-property :ref:`NodePath` **anim_player** = ``NodePath("")`` .. rst-class:: classref-property-setget - void **set_animation_player** **(** :ref:`NodePath` value **)** - :ref:`NodePath` **get_animation_player** **(** **)** The path to the :ref:`AnimationPlayer` used for animating. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_property_process_callback: .. rst-class:: classref-property :ref:`AnimationProcessCallback` **process_callback** = ``1`` .. rst-class:: classref-property-setget - void **set_process_callback** **(** :ref:`AnimationProcessCallback` value **)** - :ref:`AnimationProcessCallback` **get_process_callback** **(** **)** The process mode of this **AnimationTree**. See :ref:`AnimationProcessCallback` for available modes. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_property_root_motion_track: .. rst-class:: classref-property :ref:`NodePath` **root_motion_track** = ``NodePath("")`` .. rst-class:: classref-property-setget - void **set_root_motion_track** **(** :ref:`NodePath` value **)** - :ref:`NodePath` **get_root_motion_track** **(** **)** The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by ``":"``. For example, ``"character/skeleton:ankle"`` or ``"character/mesh:transform/local"``. If the track has type :ref:`Animation.TYPE_POSITION_3D`, :ref:`Animation.TYPE_ROTATION_3D` or :ref:`Animation.TYPE_SCALE_3D` the transformation will be canceled visually, and the animation will appear to stay in place. See also :ref:`get_root_motion_position`, :ref:`get_root_motion_rotation`, :ref:`get_root_motion_scale` and :ref:`RootMotionView`. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_property_tree_root: .. rst-class:: classref-property :ref:`AnimationNode` **tree_root** .. rst-class:: classref-property-setget - void **set_tree_root** **(** :ref:`AnimationNode` value **)** - :ref:`AnimationNode` **get_tree_root** **(** **)** The root animation node of this **AnimationTree**. See :ref:`AnimationNode`. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_AnimationTree_method__post_process_key_value: .. rst-class:: classref-method :ref:`Variant` **_post_process_key_value** **(** :ref:`Animation` animation, :ref:`int` track, :ref:`Variant` value, :ref:`Object` object, :ref:`int` object_idx **)** |virtual| |const| A virtual function for processing after key getting during playback. .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_method_advance: .. rst-class:: classref-method void **advance** **(** :ref:`float` delta **)** Manually advance the animations by the specified time (in seconds). .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_method_get_root_motion_position: .. rst-class:: classref-method :ref:`Vector3` **get_root_motion_position** **(** **)** |const| Retrieve the motion of position with the :ref:`root_motion_track` as a :ref:`Vector3` that can be used elsewhere. If :ref:`root_motion_track` is not a path to a track of type :ref:`Animation.TYPE_POSITION_3D`, returns ``Vector3(0, 0, 0)``. See also :ref:`root_motion_track` and :ref:`RootMotionView`. The most basic example is applying position to :ref:`CharacterBody3D`: .. tabs:: .. code-tab:: gdscript var current_rotation: Quaternion func _process(delta): if Input.is_action_just_pressed("animate"): current_rotation = get_quaternion() state_machine.travel("Animate") var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta set_velocity(velocity) move_and_slide() .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_method_get_root_motion_rotation: .. rst-class:: classref-method :ref:`Quaternion` **get_root_motion_rotation** **(** **)** |const| Retrieve the motion of rotation with the :ref:`root_motion_track` as a :ref:`Quaternion` that can be used elsewhere. If :ref:`root_motion_track` is not a path to a track of type :ref:`Animation.TYPE_ROTATION_3D`, returns ``Quaternion(0, 0, 0, 1)``. See also :ref:`root_motion_track` and :ref:`RootMotionView`. The most basic example is applying rotation to :ref:`CharacterBody3D`: .. tabs:: .. code-tab:: gdscript func _process(delta): if Input.is_action_just_pressed("animate"): state_machine.travel("Animate") set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation()) .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_method_get_root_motion_scale: .. rst-class:: classref-method :ref:`Vector3` **get_root_motion_scale** **(** **)** |const| Retrieve the motion of scale with the :ref:`root_motion_track` as a :ref:`Vector3` that can be used elsewhere. If :ref:`root_motion_track` is not a path to a track of type :ref:`Animation.TYPE_SCALE_3D`, returns ``Vector3(0, 0, 0)``. See also :ref:`root_motion_track` and :ref:`RootMotionView`. The most basic example is applying scale to :ref:`CharacterBody3D`: .. tabs:: .. code-tab:: gdscript var current_scale: Vector3 = Vector3(1, 1, 1) var scale_accum: Vector3 = Vector3(1, 1, 1) func _process(delta): if Input.is_action_just_pressed("animate"): current_scale = get_scale() scale_accum = Vector3(1, 1, 1) state_machine.travel("Animate") scale_accum += animation_tree.get_root_motion_scale() set_scale(current_scale * scale_accum) .. rst-class:: classref-item-separator ---- .. _class_AnimationTree_method_rename_parameter: .. rst-class:: classref-method void **rename_parameter** **(** :ref:`String` old_name, :ref:`String` new_name **)** .. container:: contribute There is currently no description for this method. Please help us by :ref:`contributing one `! .. |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.)`