class_animationtree.rst 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/AnimationTree.xml.
  6. .. _class_AnimationTree:
  7. AnimationTree
  8. =============
  9. **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. A node to be used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. A node to be used for advanced animation transitions in an :ref:`AnimationPlayer<class_AnimationPlayer>`.
  15. \ **Note:** When linked with an :ref:`AnimationPlayer<class_AnimationPlayer>`, several properties and methods of the corresponding :ref:`AnimationPlayer<class_AnimationPlayer>` will not function as expected. Playback and transitions should be handled using only the **AnimationTree** and its constituent :ref:`AnimationNode<class_AnimationNode>`\ (s). The :ref:`AnimationPlayer<class_AnimationPlayer>` node should be used solely for adding, deleting, and editing animations.
  16. .. rst-class:: classref-introduction-group
  17. Tutorials
  18. ---------
  19. - :doc:`Using AnimationTree <../tutorials/animation/animation_tree>`
  20. - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__
  21. .. rst-class:: classref-reftable-group
  22. Properties
  23. ----------
  24. .. table::
  25. :widths: auto
  26. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  27. | :ref:`bool<class_bool>` | :ref:`active<class_AnimationTree_property_active>` | ``false`` |
  28. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  29. | :ref:`NodePath<class_NodePath>` | :ref:`advance_expression_base_node<class_AnimationTree_property_advance_expression_base_node>` | ``NodePath(".")`` |
  30. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  31. | :ref:`NodePath<class_NodePath>` | :ref:`anim_player<class_AnimationTree_property_anim_player>` | ``NodePath("")`` |
  32. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  33. | :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` | :ref:`process_callback<class_AnimationTree_property_process_callback>` | ``1`` |
  34. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  35. | :ref:`NodePath<class_NodePath>` | :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` | ``NodePath("")`` |
  36. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  37. | :ref:`AnimationNode<class_AnimationNode>` | :ref:`tree_root<class_AnimationTree_property_tree_root>` | |
  38. +------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+-------------------+
  39. .. rst-class:: classref-reftable-group
  40. Methods
  41. -------
  42. .. table::
  43. :widths: auto
  44. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | :ref:`Variant<class_Variant>` | :ref:`_post_process_key_value<class_AnimationTree_method__post_process_key_value>` **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const| |
  46. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | void | :ref:`advance<class_AnimationTree_method_advance>` **(** :ref:`float<class_float>` delta **)** |
  48. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Vector3<class_Vector3>` | :ref:`get_root_motion_position<class_AnimationTree_method_get_root_motion_position>` **(** **)** |const| |
  50. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`Quaternion<class_Quaternion>` | :ref:`get_root_motion_rotation<class_AnimationTree_method_get_root_motion_rotation>` **(** **)** |const| |
  52. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`Vector3<class_Vector3>` | :ref:`get_root_motion_scale<class_AnimationTree_method_get_root_motion_scale>` **(** **)** |const| |
  54. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. | void | :ref:`rename_parameter<class_AnimationTree_method_rename_parameter>` **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)** |
  56. +-------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  57. .. rst-class:: classref-section-separator
  58. ----
  59. .. rst-class:: classref-descriptions-group
  60. Signals
  61. -------
  62. .. _class_AnimationTree_signal_animation_finished:
  63. .. rst-class:: classref-signal
  64. **animation_finished** **(** :ref:`StringName<class_StringName>` anim_name **)**
  65. Notifies when an animation finished playing.
  66. \ **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.
  67. .. rst-class:: classref-item-separator
  68. ----
  69. .. _class_AnimationTree_signal_animation_player_changed:
  70. .. rst-class:: classref-signal
  71. **animation_player_changed** **(** **)**
  72. Emitted when the :ref:`anim_player<class_AnimationTree_property_anim_player>` is changed.
  73. .. rst-class:: classref-item-separator
  74. ----
  75. .. _class_AnimationTree_signal_animation_started:
  76. .. rst-class:: classref-signal
  77. **animation_started** **(** :ref:`StringName<class_StringName>` anim_name **)**
  78. Notifies when an animation starts playing.
  79. \ **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.
  80. .. rst-class:: classref-section-separator
  81. ----
  82. .. rst-class:: classref-descriptions-group
  83. Enumerations
  84. ------------
  85. .. _enum_AnimationTree_AnimationProcessCallback:
  86. .. rst-class:: classref-enumeration
  87. enum **AnimationProcessCallback**:
  88. .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS:
  89. .. rst-class:: classref-enumeration-constant
  90. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
  91. The animations will progress during the physics frame (i.e. :ref:`Node._physics_process<class_Node_method__physics_process>`).
  92. .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE:
  93. .. rst-class:: classref-enumeration-constant
  94. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
  95. The animations will progress during the idle frame (i.e. :ref:`Node._process<class_Node_method__process>`).
  96. .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
  97. .. rst-class:: classref-enumeration-constant
  98. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
  99. The animations will only progress manually (see :ref:`advance<class_AnimationTree_method_advance>`).
  100. .. rst-class:: classref-section-separator
  101. ----
  102. .. rst-class:: classref-descriptions-group
  103. Property Descriptions
  104. ---------------------
  105. .. _class_AnimationTree_property_active:
  106. .. rst-class:: classref-property
  107. :ref:`bool<class_bool>` **active** = ``false``
  108. .. rst-class:: classref-property-setget
  109. - void **set_active** **(** :ref:`bool<class_bool>` value **)**
  110. - :ref:`bool<class_bool>` **is_active** **(** **)**
  111. If ``true``, the **AnimationTree** will be processing.
  112. .. rst-class:: classref-item-separator
  113. ----
  114. .. _class_AnimationTree_property_advance_expression_base_node:
  115. .. rst-class:: classref-property
  116. :ref:`NodePath<class_NodePath>` **advance_expression_base_node** = ``NodePath(".")``
  117. .. rst-class:: classref-property-setget
  118. - void **set_advance_expression_base_node** **(** :ref:`NodePath<class_NodePath>` value **)**
  119. - :ref:`NodePath<class_NodePath>` **get_advance_expression_base_node** **(** **)**
  120. The path to the :ref:`Node<class_Node>` used to evaluate the AnimationNode :ref:`Expression<class_Expression>` if one is not explicitly specified internally.
  121. .. rst-class:: classref-item-separator
  122. ----
  123. .. _class_AnimationTree_property_anim_player:
  124. .. rst-class:: classref-property
  125. :ref:`NodePath<class_NodePath>` **anim_player** = ``NodePath("")``
  126. .. rst-class:: classref-property-setget
  127. - void **set_animation_player** **(** :ref:`NodePath<class_NodePath>` value **)**
  128. - :ref:`NodePath<class_NodePath>` **get_animation_player** **(** **)**
  129. The path to the :ref:`AnimationPlayer<class_AnimationPlayer>` used for animating.
  130. .. rst-class:: classref-item-separator
  131. ----
  132. .. _class_AnimationTree_property_process_callback:
  133. .. rst-class:: classref-property
  134. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **process_callback** = ``1``
  135. .. rst-class:: classref-property-setget
  136. - void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` value **)**
  137. - :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback** **(** **)**
  138. The process mode of this **AnimationTree**. See :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` for available modes.
  139. .. rst-class:: classref-item-separator
  140. ----
  141. .. _class_AnimationTree_property_root_motion_track:
  142. .. rst-class:: classref-property
  143. :ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")``
  144. .. rst-class:: classref-property-setget
  145. - void **set_root_motion_track** **(** :ref:`NodePath<class_NodePath>` value **)**
  146. - :ref:`NodePath<class_NodePath>` **get_root_motion_track** **(** **)**
  147. 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"``.
  148. If the track has type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>` or :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_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<class_AnimationTree_method_get_root_motion_position>`, :ref:`get_root_motion_rotation<class_AnimationTree_method_get_root_motion_rotation>`, :ref:`get_root_motion_scale<class_AnimationTree_method_get_root_motion_scale>` and :ref:`RootMotionView<class_RootMotionView>`.
  149. .. rst-class:: classref-item-separator
  150. ----
  151. .. _class_AnimationTree_property_tree_root:
  152. .. rst-class:: classref-property
  153. :ref:`AnimationNode<class_AnimationNode>` **tree_root**
  154. .. rst-class:: classref-property-setget
  155. - void **set_tree_root** **(** :ref:`AnimationNode<class_AnimationNode>` value **)**
  156. - :ref:`AnimationNode<class_AnimationNode>` **get_tree_root** **(** **)**
  157. The root animation node of this **AnimationTree**. See :ref:`AnimationNode<class_AnimationNode>`.
  158. .. rst-class:: classref-section-separator
  159. ----
  160. .. rst-class:: classref-descriptions-group
  161. Method Descriptions
  162. -------------------
  163. .. _class_AnimationTree_method__post_process_key_value:
  164. .. rst-class:: classref-method
  165. :ref:`Variant<class_Variant>` **_post_process_key_value** **(** :ref:`Animation<class_Animation>` animation, :ref:`int<class_int>` track, :ref:`Variant<class_Variant>` value, :ref:`Object<class_Object>` object, :ref:`int<class_int>` object_idx **)** |virtual| |const|
  166. A virtual function for processing after key getting during playback.
  167. .. rst-class:: classref-item-separator
  168. ----
  169. .. _class_AnimationTree_method_advance:
  170. .. rst-class:: classref-method
  171. void **advance** **(** :ref:`float<class_float>` delta **)**
  172. Manually advance the animations by the specified time (in seconds).
  173. .. rst-class:: classref-item-separator
  174. ----
  175. .. _class_AnimationTree_method_get_root_motion_position:
  176. .. rst-class:: classref-method
  177. :ref:`Vector3<class_Vector3>` **get_root_motion_position** **(** **)** |const|
  178. Retrieve the motion of position with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
  179. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_POSITION_3D<class_Animation_constant_TYPE_POSITION_3D>`, returns ``Vector3(0, 0, 0)``.
  180. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  181. The most basic example is applying position to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  182. .. tabs::
  183. .. code-tab:: gdscript
  184. var current_rotation: Quaternion
  185. func _process(delta):
  186. if Input.is_action_just_pressed("animate"):
  187. current_rotation = get_quaternion()
  188. state_machine.travel("Animate")
  189. var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
  190. set_velocity(velocity)
  191. move_and_slide()
  192. .. rst-class:: classref-item-separator
  193. ----
  194. .. _class_AnimationTree_method_get_root_motion_rotation:
  195. .. rst-class:: classref-method
  196. :ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation** **(** **)** |const|
  197. Retrieve the motion of rotation with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Quaternion<class_Quaternion>` that can be used elsewhere.
  198. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_ROTATION_3D<class_Animation_constant_TYPE_ROTATION_3D>`, returns ``Quaternion(0, 0, 0, 1)``.
  199. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  200. The most basic example is applying rotation to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  201. .. tabs::
  202. .. code-tab:: gdscript
  203. func _process(delta):
  204. if Input.is_action_just_pressed("animate"):
  205. state_machine.travel("Animate")
  206. set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
  207. .. rst-class:: classref-item-separator
  208. ----
  209. .. _class_AnimationTree_method_get_root_motion_scale:
  210. .. rst-class:: classref-method
  211. :ref:`Vector3<class_Vector3>` **get_root_motion_scale** **(** **)** |const|
  212. Retrieve the motion of scale with the :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` as a :ref:`Vector3<class_Vector3>` that can be used elsewhere.
  213. If :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` is not a path to a track of type :ref:`Animation.TYPE_SCALE_3D<class_Animation_constant_TYPE_SCALE_3D>`, returns ``Vector3(0, 0, 0)``.
  214. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  215. The most basic example is applying scale to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  216. .. tabs::
  217. .. code-tab:: gdscript
  218. var current_scale: Vector3 = Vector3(1, 1, 1)
  219. var scale_accum: Vector3 = Vector3(1, 1, 1)
  220. func _process(delta):
  221. if Input.is_action_just_pressed("animate"):
  222. current_scale = get_scale()
  223. scale_accum = Vector3(1, 1, 1)
  224. state_machine.travel("Animate")
  225. scale_accum += animation_tree.get_root_motion_scale()
  226. set_scale(current_scale * scale_accum)
  227. .. rst-class:: classref-item-separator
  228. ----
  229. .. _class_AnimationTree_method_rename_parameter:
  230. .. rst-class:: classref-method
  231. void **rename_parameter** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
  232. .. container:: contribute
  233. There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  234. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  235. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  236. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  237. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  238. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  239. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`