class_animationtree.rst 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  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. | void | :ref:`advance<class_AnimationTree_method_advance>` **(** :ref:`float<class_float>` delta **)** |
  46. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | :ref:`Vector3<class_Vector3>` | :ref:`get_root_motion_position<class_AnimationTree_method_get_root_motion_position>` **(** **)** |const| |
  48. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Quaternion<class_Quaternion>` | :ref:`get_root_motion_rotation<class_AnimationTree_method_get_root_motion_rotation>` **(** **)** |const| |
  50. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`Vector3<class_Vector3>` | :ref:`get_root_motion_scale<class_AnimationTree_method_get_root_motion_scale>` **(** **)** |const| |
  52. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | void | :ref:`rename_parameter<class_AnimationTree_method_rename_parameter>` **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)** |
  54. +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. .. rst-class:: classref-section-separator
  56. ----
  57. .. rst-class:: classref-descriptions-group
  58. Signals
  59. -------
  60. .. _class_AnimationTree_signal_animation_finished:
  61. .. rst-class:: classref-signal
  62. **animation_finished** **(** :ref:`StringName<class_StringName>` anim_name **)**
  63. Notifies when an animation finished playing.
  64. \ **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.
  65. .. rst-class:: classref-item-separator
  66. ----
  67. .. _class_AnimationTree_signal_animation_player_changed:
  68. .. rst-class:: classref-signal
  69. **animation_player_changed** **(** **)**
  70. Emitted when the :ref:`anim_player<class_AnimationTree_property_anim_player>` is changed.
  71. .. rst-class:: classref-item-separator
  72. ----
  73. .. _class_AnimationTree_signal_animation_started:
  74. .. rst-class:: classref-signal
  75. **animation_started** **(** :ref:`StringName<class_StringName>` anim_name **)**
  76. Notifies when an animation starts playing.
  77. \ **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.
  78. .. rst-class:: classref-section-separator
  79. ----
  80. .. rst-class:: classref-descriptions-group
  81. Enumerations
  82. ------------
  83. .. _enum_AnimationTree_AnimationProcessCallback:
  84. .. rst-class:: classref-enumeration
  85. enum **AnimationProcessCallback**:
  86. .. _class_AnimationTree_constant_ANIMATION_PROCESS_PHYSICS:
  87. .. rst-class:: classref-enumeration-constant
  88. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_PHYSICS** = ``0``
  89. The animations will progress during the physics frame (i.e. :ref:`Node._physics_process<class_Node_method__physics_process>`).
  90. .. _class_AnimationTree_constant_ANIMATION_PROCESS_IDLE:
  91. .. rst-class:: classref-enumeration-constant
  92. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_IDLE** = ``1``
  93. The animations will progress during the idle frame (i.e. :ref:`Node._process<class_Node_method__process>`).
  94. .. _class_AnimationTree_constant_ANIMATION_PROCESS_MANUAL:
  95. .. rst-class:: classref-enumeration-constant
  96. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **ANIMATION_PROCESS_MANUAL** = ``2``
  97. The animations will only progress manually (see :ref:`advance<class_AnimationTree_method_advance>`).
  98. .. rst-class:: classref-section-separator
  99. ----
  100. .. rst-class:: classref-descriptions-group
  101. Property Descriptions
  102. ---------------------
  103. .. _class_AnimationTree_property_active:
  104. .. rst-class:: classref-property
  105. :ref:`bool<class_bool>` **active** = ``false``
  106. .. rst-class:: classref-property-setget
  107. - void **set_active** **(** :ref:`bool<class_bool>` value **)**
  108. - :ref:`bool<class_bool>` **is_active** **(** **)**
  109. If ``true``, the **AnimationTree** will be processing.
  110. .. rst-class:: classref-item-separator
  111. ----
  112. .. _class_AnimationTree_property_advance_expression_base_node:
  113. .. rst-class:: classref-property
  114. :ref:`NodePath<class_NodePath>` **advance_expression_base_node** = ``NodePath(".")``
  115. .. rst-class:: classref-property-setget
  116. - void **set_advance_expression_base_node** **(** :ref:`NodePath<class_NodePath>` value **)**
  117. - :ref:`NodePath<class_NodePath>` **get_advance_expression_base_node** **(** **)**
  118. The path to the :ref:`Node<class_Node>` used to evaluate the AnimationNode :ref:`Expression<class_Expression>` if one is not explicitly specified internally.
  119. .. rst-class:: classref-item-separator
  120. ----
  121. .. _class_AnimationTree_property_anim_player:
  122. .. rst-class:: classref-property
  123. :ref:`NodePath<class_NodePath>` **anim_player** = ``NodePath("")``
  124. .. rst-class:: classref-property-setget
  125. - void **set_animation_player** **(** :ref:`NodePath<class_NodePath>` value **)**
  126. - :ref:`NodePath<class_NodePath>` **get_animation_player** **(** **)**
  127. The path to the :ref:`AnimationPlayer<class_AnimationPlayer>` used for animating.
  128. .. rst-class:: classref-item-separator
  129. ----
  130. .. _class_AnimationTree_property_process_callback:
  131. .. rst-class:: classref-property
  132. :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **process_callback** = ``1``
  133. .. rst-class:: classref-property-setget
  134. - void **set_process_callback** **(** :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` value **)**
  135. - :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` **get_process_callback** **(** **)**
  136. The process mode of this **AnimationTree**. See :ref:`AnimationProcessCallback<enum_AnimationTree_AnimationProcessCallback>` for available modes.
  137. .. rst-class:: classref-item-separator
  138. ----
  139. .. _class_AnimationTree_property_root_motion_track:
  140. .. rst-class:: classref-property
  141. :ref:`NodePath<class_NodePath>` **root_motion_track** = ``NodePath("")``
  142. .. rst-class:: classref-property-setget
  143. - void **set_root_motion_track** **(** :ref:`NodePath<class_NodePath>` value **)**
  144. - :ref:`NodePath<class_NodePath>` **get_root_motion_track** **(** **)**
  145. 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"``.
  146. 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 cancelled 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>`.
  147. .. rst-class:: classref-item-separator
  148. ----
  149. .. _class_AnimationTree_property_tree_root:
  150. .. rst-class:: classref-property
  151. :ref:`AnimationNode<class_AnimationNode>` **tree_root**
  152. .. rst-class:: classref-property-setget
  153. - void **set_tree_root** **(** :ref:`AnimationNode<class_AnimationNode>` value **)**
  154. - :ref:`AnimationNode<class_AnimationNode>` **get_tree_root** **(** **)**
  155. The root animation node of this **AnimationTree**. See :ref:`AnimationNode<class_AnimationNode>`.
  156. .. rst-class:: classref-section-separator
  157. ----
  158. .. rst-class:: classref-descriptions-group
  159. Method Descriptions
  160. -------------------
  161. .. _class_AnimationTree_method_advance:
  162. .. rst-class:: classref-method
  163. void **advance** **(** :ref:`float<class_float>` delta **)**
  164. Manually advance the animations by the specified time (in seconds).
  165. .. rst-class:: classref-item-separator
  166. ----
  167. .. _class_AnimationTree_method_get_root_motion_position:
  168. .. rst-class:: classref-method
  169. :ref:`Vector3<class_Vector3>` **get_root_motion_position** **(** **)** |const|
  170. 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.
  171. 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)``.
  172. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  173. The most basic example is applying position to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  174. .. tabs::
  175. .. code-tab:: gdscript
  176. var current_rotation: Quaternion
  177. func _process(delta):
  178. if Input.is_action_just_pressed("animate"):
  179. current_rotation = get_quaternion()
  180. state_machine.travel("Animate")
  181. var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
  182. set_velocity(velocity)
  183. move_and_slide()
  184. .. rst-class:: classref-item-separator
  185. ----
  186. .. _class_AnimationTree_method_get_root_motion_rotation:
  187. .. rst-class:: classref-method
  188. :ref:`Quaternion<class_Quaternion>` **get_root_motion_rotation** **(** **)** |const|
  189. 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.
  190. 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)``.
  191. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  192. The most basic example is applying rotation to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  193. .. tabs::
  194. .. code-tab:: gdscript
  195. func _process(delta):
  196. if Input.is_action_just_pressed("animate"):
  197. state_machine.travel("Animate")
  198. set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
  199. .. rst-class:: classref-item-separator
  200. ----
  201. .. _class_AnimationTree_method_get_root_motion_scale:
  202. .. rst-class:: classref-method
  203. :ref:`Vector3<class_Vector3>` **get_root_motion_scale** **(** **)** |const|
  204. 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.
  205. 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)``.
  206. See also :ref:`root_motion_track<class_AnimationTree_property_root_motion_track>` and :ref:`RootMotionView<class_RootMotionView>`.
  207. The most basic example is applying scale to :ref:`CharacterBody3D<class_CharacterBody3D>`:
  208. .. tabs::
  209. .. code-tab:: gdscript
  210. var current_scale: Vector3 = Vector3(1, 1, 1)
  211. var scale_accum: Vector3 = Vector3(1, 1, 1)
  212. func _process(delta):
  213. if Input.is_action_just_pressed("animate"):
  214. current_scale = get_scale()
  215. scale_accum = Vector3(1, 1, 1)
  216. state_machine.travel("Animate")
  217. scale_accum += animation_tree.get_root_motion_scale()
  218. set_scale(current_scale * scale_accum)
  219. .. rst-class:: classref-item-separator
  220. ----
  221. .. _class_AnimationTree_method_rename_parameter:
  222. .. rst-class:: classref-method
  223. void **rename_parameter** **(** :ref:`String<class_String>` old_name, :ref:`String<class_String>` new_name **)**
  224. .. container:: contribute
  225. There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`!
  226. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  227. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  228. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  229. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  230. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  231. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`