Skip to content

Latest commit

 

History

History
371 lines (212 loc) · 17.3 KB

File metadata and controls

371 lines (212 loc) · 17.3 KB
github_url:hide

AnimatedSprite3D

Inherits: :ref:`SpriteBase3D<class_SpriteBase3D>` < :ref:`GeometryInstance3D<class_GeometryInstance3D>` < :ref:`VisualInstance3D<class_VisualInstance3D>` < :ref:`Node3D<class_Node3D>` < :ref:`Node<class_Node>` < :ref:`Object<class_Object>`

2D sprite node in 3D world, that can use multiple 2D textures for animation.

.. rst-class:: classref-introduction-group

Description

AnimatedSprite3D is similar to the :ref:`Sprite3D<class_Sprite3D>` node, except it carries multiple textures as animation :ref:`sprite_frames<class_AnimatedSprite3D_property_sprite_frames>`. Animations are created using a :ref:`SpriteFrames<class_SpriteFrames>` resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The :ref:`SpriteFrames<class_SpriteFrames>` resource can be configured in the editor via the SpriteFrames bottom panel.

.. rst-class:: classref-introduction-group

Tutorials

.. rst-class:: classref-reftable-group

Properties

:ref:`StringName<class_StringName>` :ref:`animation<class_AnimatedSprite3D_property_animation>` &"default"
:ref:`String<class_String>` :ref:`autoplay<class_AnimatedSprite3D_property_autoplay>` ""
:ref:`int<class_int>` :ref:`frame<class_AnimatedSprite3D_property_frame>` 0
:ref:`float<class_float>` :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` 0.0
:ref:`float<class_float>` :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` 1.0
:ref:`SpriteFrames<class_SpriteFrames>` :ref:`sprite_frames<class_AnimatedSprite3D_property_sprite_frames>`  
.. rst-class:: classref-reftable-group

Methods

:ref:`float<class_float>` :ref:`get_playing_speed<class_AnimatedSprite3D_method_get_playing_speed>`() |const|
:ref:`bool<class_bool>` :ref:`is_playing<class_AnimatedSprite3D_method_is_playing>`() |const|
|void| :ref:`pause<class_AnimatedSprite3D_method_pause>`()
|void| :ref:`play<class_AnimatedSprite3D_method_play>`(name: :ref:`StringName<class_StringName>` = &"", custom_speed: :ref:`float<class_float>` = 1.0, from_end: :ref:`bool<class_bool>` = false)
|void| :ref:`play_backwards<class_AnimatedSprite3D_method_play_backwards>`(name: :ref:`StringName<class_StringName>` = &"")
|void| :ref:`set_frame_and_progress<class_AnimatedSprite3D_method_set_frame_and_progress>`(frame: :ref:`int<class_int>`, progress: :ref:`float<class_float>`)
|void| :ref:`stop<class_AnimatedSprite3D_method_stop>`()
.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Signals

.. rst-class:: classref-signal

animation_changed() :ref:`🔗<class_AnimatedSprite3D_signal_animation_changed>`

Emitted when :ref:`animation<class_AnimatedSprite3D_property_animation>` changes.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

animation_finished() :ref:`🔗<class_AnimatedSprite3D_signal_animation_finished>`

Emitted when the animation reaches the end, or the start if it is played in reverse. When the animation finishes, it pauses the playback.

Note: This signal is not emitted if an animation is looping.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

animation_looped() :ref:`🔗<class_AnimatedSprite3D_signal_animation_looped>`

Emitted when the animation loops.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

frame_changed() :ref:`🔗<class_AnimatedSprite3D_signal_frame_changed>`

Emitted when :ref:`frame<class_AnimatedSprite3D_property_frame>` changes.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

sprite_frames_changed() :ref:`🔗<class_AnimatedSprite3D_signal_sprite_frames_changed>`

Emitted when :ref:`sprite_frames<class_AnimatedSprite3D_property_sprite_frames>` changes.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Property Descriptions

.. rst-class:: classref-property

:ref:`StringName<class_StringName>` animation = &"default" :ref:`🔗<class_AnimatedSprite3D_property_animation>`

.. rst-class:: classref-property-setget

The current animation from the :ref:`sprite_frames<class_AnimatedSprite3D_property_sprite_frames>` resource. If this value is changed, the :ref:`frame<class_AnimatedSprite3D_property_frame>` counter and the :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` are reset.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`String<class_String>` autoplay = "" :ref:`🔗<class_AnimatedSprite3D_property_autoplay>`

.. rst-class:: classref-property-setget

The key of the animation to play when the scene loads.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`int<class_int>` frame = 0 :ref:`🔗<class_AnimatedSprite3D_property_frame>`

.. rst-class:: classref-property-setget

The displayed animation frame's index. Setting this property also resets :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>`. If this is not desired, use :ref:`set_frame_and_progress()<class_AnimatedSprite3D_method_set_frame_and_progress>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` frame_progress = 0.0 :ref:`🔗<class_AnimatedSprite3D_property_frame_progress>`

.. rst-class:: classref-property-setget

The progress value between 0.0 and 1.0 until the current frame transitions to the next frame. If the animation is playing backwards, the value transitions from 1.0 to 0.0.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` speed_scale = 1.0 :ref:`🔗<class_AnimatedSprite3D_property_speed_scale>`

.. rst-class:: classref-property-setget

The speed scaling ratio. For example, if this value is 1, then the animation plays at normal speed. If it's 0.5, then it plays at half speed. If it's 2, then it plays at double speed.

If set to a negative value, the animation is played in reverse. If set to 0, the animation will not advance.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`SpriteFrames<class_SpriteFrames>` sprite_frames :ref:`🔗<class_AnimatedSprite3D_property_sprite_frames>`

.. rst-class:: classref-property-setget

The :ref:`SpriteFrames<class_SpriteFrames>` resource containing the animation(s). Allows you the option to load, edit, clear, make unique and save the states of the :ref:`SpriteFrames<class_SpriteFrames>` resource.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Method Descriptions

.. rst-class:: classref-method

:ref:`float<class_float>` get_playing_speed() |const| :ref:`🔗<class_AnimatedSprite3D_method_get_playing_speed>`

Returns the actual playing speed of current animation or 0 if not playing. This speed is the :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` property multiplied by custom_speed argument specified when calling the :ref:`play()<class_AnimatedSprite3D_method_play>` method.

Returns a negative value if the current animation is playing backwards.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_playing() |const| :ref:`🔗<class_AnimatedSprite3D_method_is_playing>`

Returns true if an animation is currently playing (even if :ref:`speed_scale<class_AnimatedSprite3D_property_speed_scale>` and/or custom_speed are 0).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| pause() :ref:`🔗<class_AnimatedSprite3D_method_pause>`

Pauses the currently playing animation. The :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` will be kept and calling :ref:`play()<class_AnimatedSprite3D_method_play>` or :ref:`play_backwards()<class_AnimatedSprite3D_method_play_backwards>` without arguments will resume the animation from the current playback position.

See also :ref:`stop()<class_AnimatedSprite3D_method_stop>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| play(name: :ref:`StringName<class_StringName>` = &"", custom_speed: :ref:`float<class_float>` = 1.0, from_end: :ref:`bool<class_bool>` = false) :ref:`🔗<class_AnimatedSprite3D_method_play>`

Plays the animation with key name. If custom_speed is negative and from_end is true, the animation will play backwards (which is equivalent to calling :ref:`play_backwards()<class_AnimatedSprite3D_method_play_backwards>`).

If this method is called with that same animation name, or with no name parameter, the assigned animation will resume playing if it was paused.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| play_backwards(name: :ref:`StringName<class_StringName>` = &"") :ref:`🔗<class_AnimatedSprite3D_method_play_backwards>`

Plays the animation with key name in reverse.

This method is a shorthand for :ref:`play()<class_AnimatedSprite3D_method_play>` with custom_speed = -1.0 and from_end = true, so see its description for more information.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_frame_and_progress(frame: :ref:`int<class_int>`, progress: :ref:`float<class_float>`) :ref:`🔗<class_AnimatedSprite3D_method_set_frame_and_progress>`

Sets :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to the given values. Unlike setting :ref:`frame<class_AnimatedSprite3D_property_frame>`, this method does not reset the :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>` to 0.0 implicitly.

Example: Change the animation while keeping the same :ref:`frame<class_AnimatedSprite3D_property_frame>` and :ref:`frame_progress<class_AnimatedSprite3D_property_frame_progress>`:

.. tabs::

 .. code-tab:: gdscript

    var current_frame = animated_sprite.get_frame()
    var current_progress = animated_sprite.get_frame_progress()
    animated_sprite.play("walk_another_skin")
    animated_sprite.set_frame_and_progress(current_frame, current_progress)



.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| stop() :ref:`🔗<class_AnimatedSprite3D_method_stop>`

Stops the currently playing animation. The animation position is reset to 0 and the custom_speed is reset to 1.0. See also :ref:`pause()<class_AnimatedSprite3D_method_pause>`.