Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

AnimationPlayer

Hereda: AnimationMixer < Node < Object

Un nodo utilizado para la reproducción de animación.

Descripción

Un reproductor de animación se utiliza para la reproducción de propósito general de animaciones. Contiene un diccionario de recursos AnimationLibrary y tiempos de mezcla personalizados entre transiciones de animación.

Algunos métodos y propiedades usan una única clave para referenciar una animación directamente. Estas claves tienen el formato de la clave de la biblioteca, seguida de una barra inclinada y luego la clave de la animación dentro de la biblioteca, por ejemplo "movement/run". Si la clave de la biblioteca es una string vacía (conocida como la biblioteca predeterminada), la barra inclinada se omite, siendo la misma clave utilizada por la biblioteca.

AnimationPlayer es más adecuado que Tween para animaciones más complejas, por ejemplo, aquellas con temporizaciones no triviales. También puede usarse en lugar de Tween si el editor de pistas de animación es más conveniente que hacerlo en código.

La actualización de las propiedades objetivo de las animaciones ocurre en el fotograma de proceso.

Tutoriales

Propiedades

StringName

assigned_animation

StringName

autoplay

&""

StringName

current_animation

&""

float

current_animation_length

float

current_animation_position

bool

movie_quit_on_finish

false

bool

playback_auto_capture

true

float

playback_auto_capture_duration

-1.0

EaseType

playback_auto_capture_ease_type

0

TransitionType

playback_auto_capture_transition_type

0

float

playback_default_blend_time

0.0

float

speed_scale

1.0

Métodos

StringName

animation_get_next(animation_from: StringName) const

void

animation_set_next(animation_from: StringName, animation_to: StringName)

void

clear_queue()

float

get_blend_time(animation_from: StringName, animation_to: StringName) const

AnimationMethodCallMode

get_method_call_mode() const

float

get_playing_speed() const

AnimationProcessCallback

get_process_callback() const

Array[StringName]

get_queue()

NodePath

get_root() const

float

get_section_end_time() const

float

get_section_start_time() const

bool

has_section() const

bool

is_animation_active() const

bool

is_playing() const

void

pause()

void

play(name: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false)

void

play_backwards(name: StringName = &"", custom_blend: float = -1)

void

play_section(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false)

void

play_section_backwards(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1)

void

play_section_with_markers(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false)

void

play_section_with_markers_backwards(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1)

void

play_with_capture(name: StringName = &"", duration: float = -1.0, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false, trans_type: TransitionType = 0, ease_type: EaseType = 0)

void

queue(name: StringName)

void

reset_section()

void

seek(seconds: float, update: bool = false, update_only: bool = false)

void

set_blend_time(animation_from: StringName, animation_to: StringName, sec: float)

void

set_method_call_mode(mode: AnimationMethodCallMode)

void

set_process_callback(mode: AnimationProcessCallback)

void

set_root(path: NodePath)

void

set_section(start_time: float = -1, end_time: float = -1)

void

set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"")

void

stop(keep_state: bool = false)


Señales

animation_changed(old_name: StringName, new_name: StringName) 🔗

Emitida cuando una animación en cola se reproduce después de que la animación anterior haya terminado. Véase también queue().

Nota: La señal no se emite cuando la animación se cambia a través de play() o por un AnimationTree.


current_animation_changed(anim_name: StringName) 🔗

Emitida cuando current_animation cambia.


Enumeraciones

enum AnimationProcessCallback: 🔗

AnimationProcessCallback ANIMATION_PROCESS_PHYSICS = 0

Obsoleto: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS.

AnimationProcessCallback ANIMATION_PROCESS_IDLE = 1

Obsoleto: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE.

AnimationProcessCallback ANIMATION_PROCESS_MANUAL = 2

Obsoleto: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL.


enum AnimationMethodCallMode: 🔗

AnimationMethodCallMode ANIMATION_METHOD_CALL_DEFERRED = 0

Obsoleto: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED.

AnimationMethodCallMode ANIMATION_METHOD_CALL_IMMEDIATE = 1

Obsoleto: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE.


Descripciones de Propiedades

StringName assigned_animation 🔗

Si se está reproduciendo, la clave de la animación actual; en caso contrario, la de la última animación reproducida. Cuando se establece, esto cambia la animación, pero no la reproducirá a menos que ya se esté reproduciendo. Véase también current_animation.


StringName autoplay = &"" 🔗

La clave de la animación que se reproducirá cuando se cargue la escena.


StringName current_animation = &"" 🔗

La clave de la animación que se está reproduciendo actualmente. Si no se está reproduciendo ninguna animación, el valor de la propiedad es una string vacía. Cambiar este valor no reinicia la animación. Véase play() para más información sobre la reproducción de animaciones.

Nota: Aunque esta propiedad aparece en el Inspector, no está pensada para ser editada y no se guarda en la escena. Esta propiedad se usa principalmente para obtener la animación que se está reproduciendo actualmente, e internamente para las pistas de reproducción de animación. Para más información, véase Animation.


float current_animation_length 🔗

  • float get_current_animation_length()

La duración (en segundos) de la animación que se está reproduciendo actualmente.


float current_animation_position 🔗

  • float get_current_animation_position()

La posición (en segundos) de la animación que se está reproduciendo.


bool movie_quit_on_finish = false 🔗

  • void set_movie_quit_on_finish_enabled(value: bool)

  • bool is_movie_quit_on_finish_enabled()

Si es true y el motor se está ejecutando en modo Movie Maker (ver MovieWriter), sale del motor con SceneTree.quit() tan pronto como una animación termine de reproducirse en este AnimationPlayer. Se imprime un mensaje cuando el motor se cierra por este motivo.

Nota: Esto obedece la misma lógica que la señal AnimationMixer.animation_finished, por lo que no cerrará el motor si la animación está configurada para reproducirse en bucle.


bool playback_auto_capture = true 🔗

  • void set_auto_capture(value: bool)

  • bool is_auto_capture()

Si es true, realiza AnimationMixer.capture() antes de la reproducción automáticamente. Esto significa que se ejecuta simplemente play_with_capture() con argumentos por defecto en lugar de play().

Nota: La interpolación de captura solo se realiza si la animación contiene una pista de captura. Véase también Animation.UPDATE_CAPTURE.


float playback_auto_capture_duration = -1.0 🔗

  • void set_auto_capture_duration(value: float)

  • float get_auto_capture_duration()

Véase también play_with_capture() y AnimationMixer.capture().

Si playback_auto_capture_duration es un value negativo, la duración se establece al intervalo entre la posición actual y la primera key.


EaseType playback_auto_capture_ease_type = 0 🔗

  • void set_auto_capture_ease_type(value: EaseType)

  • EaseType get_auto_capture_ease_type()

El tipo de facilidad de la interpolación de captura. Véase también EaseType.


TransitionType playback_auto_capture_transition_type = 0 🔗

El tipo de transición de la interpolación de captura. Véase TransitionType.


float playback_default_blend_time = 0.0 🔗

  • void set_default_blend_time(value: float)

  • float get_default_blend_time()

El tiempo por defecto para mezclar las animaciones. Va de 0 a 4096 con una precisión de 0,01.


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

La relación de escala de velocidad. Por ejemplo, si este valor es 1, entonces la animación se reproduce a velocidad normal. Si es 0.5, entonces se reproduce a media velocidad. Si es 2, entonces se reproduce al doble de velocidad.

Si se establece en un valor negativo, la animación se reproduce en reversa. Si se establece en 0, la animación no avanzará.


Descripciones de Métodos

StringName animation_get_next(animation_from: StringName) const 🔗

Devuelve la clave de la animación que está en cola para reproducirse después de la animación animation_from.


void animation_set_next(animation_from: StringName, animation_to: StringName) 🔗

Dispara la animación animation_to cuando la animación animation_from se completa.


void clear_queue() 🔗

Limpia todas las colas, animaciones no reproducidas.


float get_blend_time(animation_from: StringName, animation_to: StringName) const 🔗

Devuelve el tiempo de fusión (en segundos) entre dos animaciones, referenciado por sus claves.


AnimationMethodCallMode get_method_call_mode() const 🔗

Obsoleto: Use AnimationMixer.callback_mode_method instead.

Devuelve el modo de llamada utilizado para las pistas de "Call Method".


float get_playing_speed() const 🔗

Devuelve la velocidad de reproducción real de la animación actual o 0 si no se está reproduciendo. Esta velocidad es la propiedad speed_scale multiplicada por el argumento custom_speed especificado al llamar al método play().

Devuelve un valor negativo si la animación actual se está reproduciendo hacia atrás.


AnimationProcessCallback get_process_callback() const 🔗

Obsoleto: Use AnimationMixer.callback_mode_process instead.

Devuelve la notificación del proceso en el que se actualizarán las animaciones.


Array[StringName] get_queue() 🔗

Devuelve una lista de las claves de animación que están actualmente en cola para reproducirse.


NodePath get_root() const 🔗

Obsoleto: Use AnimationMixer.root_node instead.

Devuelve el nodo desde el cual viajarán las referencias de la ruta de nodos.


float get_section_end_time() const 🔗

Devuelve el tiempo de finalización de la sección que se está reproduciendo actualmente.


float get_section_start_time() const 🔗

Devuelve el tiempo de inicio de la sección que se está reproduciendo actualmente.


bool has_section() const 🔗

Devuelve true si una animación se está reproduciendo actualmente con una sección.


bool is_animation_active() const 🔗

Devuelvetrue si hay una animación activa. Una animación se considera activa cuando se ha empezado a reproducir utilizando play() y no ha terminado aún, o sido detenida con stop()

Sirve para comprobar si una animación está en pausa o detenida.

var is_paused = not is_playing() and is_animation_active()
var is_stopped = not is_playing() and not is_animation_active()

bool is_playing() const 🔗

Devuelve true si una animación se está reproduciendo actualmente (incluso si speed_scale y/o custom_speed son 0).


void pause() 🔗

Pausa la animación que se está reproduciendo actualmente. Se mantendrá el current_animation_position y llamar a play() o play_backwards() sin argumentos o con el mismo nombre de animación que assigned_animation reanudará la animación.

Véase también stop().


void play(name: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗

Reproduce la animación con la clave name. Se pueden establecer tiempos de mezcla y velocidad personalizados.

La opción from_end solo afecta al cambiar a una nueva pista de animación, o si es la misma pista pero al inicio o al final. No afecta a reanudar la reproducción que fue pausada en medio de una animación. Si custom_speed es negativo y from_end es true, la animación se reproducirá hacia atrás (lo cual es equivalente a llamar a play_backwards()).

El AnimationPlayer mantiene un registro de su animación actual o la última reproducida con assigned_animation. Si este método se llama con ese mismo name de animación, o sin el parámetro name, la animación asignada se reanudará si estaba pausada.

Nota: La animación se actualizará la próxima vez que se procese el AnimationPlayer. Si otras variables se actualizan al mismo tiempo que se llama a esto, pueden actualizarse demasiado pronto. Para realizar la actualización inmediatamente, llama a advance(0).


void play_backwards(name: StringName = &"", custom_blend: float = -1) 🔗

Reproduce la animación con la clave name al revés.

Este método es una abreviatura de play() con custom_speed = -1.0 y from_end = true, así que consulta su descripción para obtener más información.


void play_section(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗

Reproduce la animación con la clave name y la sección que comienza en start_time y termina en end_time. Véase también play().

Establecer start_time a un valor fuera del rango de la animación significa que se usará el inicio de la animación en su lugar, y establecer end_time a un valor fuera del rango de la animación significa que se usará el final de la animación en su lugar. start_time no puede ser igual a end_time.


void play_section_backwards(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1) 🔗

Reproduce la animación con la clave name y la sección que comienza en start_time y termina en end_time en reversa.

Este método es una abreviatura de play_section() con custom_speed = -1.0 y from_end = true, consulta su descripción para más información.


void play_section_with_markers(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗

Reproduce la animación con la clave name y la sección que comienza en el marcador start_marker y termina en end_marker.

Si el marcador de inicio está vacío, la sección comienza desde el principio de la animación. Si el marcador de fin está vacío, la sección termina al final de la animación. Véase también play().


void play_section_with_markers_backwards(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1) 🔗

Reproduce la animación con la clave name y la sección que comienza en el marcador start_marker y termina en el marcador end_marker en reversa.

Este método es una abreviatura de play_section_with_markers() con custom_speed = -1.0 y from_end = true, consulta su descripción para más información.


void play_with_capture(name: StringName = &"", duration: float = -1.0, custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false, trans_type: TransitionType = 0, ease_type: EaseType = 0) 🔗

Véase también AnimationMixer.capture().

Se puede usar este método para emplear opciones de captura más detalladas que las realizadas por playback_auto_capture. Cuando playback_auto_capture es false, este método es casi igual a lo siguiente:

capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)

Si name está vacío, se utilizará assigned_animation.

Si duration es un valor negativo, la duración se establece en el intervalo entre la posición actual y la primera clave; cuando from_end es true, en su lugar se usa el intervalo entre la posición actual y la última clave.

Nota: La duration tiene en cuenta speed_scale, pero custom_speed no, porque la caché de captura se interpola con el resultado de la mezcla, y dicho resultado puede contener múltiples animaciones.


void queue(name: StringName) 🔗

Pone en cola una animación para su reproducción una vez que la animación actual y todas las animaciones previamente encoladas hayan terminado.

Nota: Si una animación en bucle se está reproduciendo actualmente, la animación en cola nunca se reproducirá a menos que la animación en bucle se detenga de alguna manera.


void reset_section() 🔗

Restablece la sección actual. No realiza ninguna acción si no se ha definido una sección.


void seek(seconds: float, update: bool = false, update_only: bool = false) 🔗

Busca la animación hasta el punto en el tiempo seconds (en segundos). Si update es true, la animación también se actualiza; de lo contrario, se actualiza en el tiempo de procesado. Los eventos entre el fotograma actual y seconds se omiten.

Si update_only es true, las pistas de reproducción de método/audio/animación no se procesarán.

Nota: Buscar hasta el final de la animación no emite AnimationMixer.animation_finished. Si quieres saltar la animación y emitir la señal, usa AnimationMixer.advance().


void set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) 🔗

Especifica un tiempo de mezcla (en segundos) entre dos animaciones, referenciadas por sus nombres.


void set_method_call_mode(mode: AnimationMethodCallMode) 🔗

Obsoleto: Use AnimationMixer.callback_mode_method instead.

Establece el modo de llamada usado para las pistas de "Método de llamada".


void set_process_callback(mode: AnimationProcessCallback) 🔗

Obsoleto: Use AnimationMixer.callback_mode_process instead.

Establece la notificación de proceso en la que se actualizan las animaciones.


void set_root(path: NodePath) 🔗

Obsoleto: Use AnimationMixer.root_node instead.

Establece el nodo desde el cual viajarán las referencias de la ruta de nodos.


void set_section(start_time: float = -1, end_time: float = -1) 🔗

Cambia los tiempos de inicio y fin de la sección que se está reproduciendo. La posición de reproducción actual se limitará dentro de la nueva sección. Véase también play_section().


void set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"") 🔗

Cambia los marcadores de inicio y fin de la sección que se está reproduciendo. La posición de reproducción actual se limitará dentro de la nueva sección. Véase también play_section_with_markers().

Si el argumento está vacío, la sección utiliza el principio o el final de la animación. Si ambos están vacíos, significa que la sección no está establecida.


void stop(keep_state: bool = false) 🔗

Detiene la animación que se está reproduciendo actualmente. La posición de la animación se restablece a 0 y la custom_speed se restablece a 1.0. Véase también pause().

Si keep_state es true, el estado de la animación no se actualiza visualmente.

Nota: Los métodos / audio / pistas de reproducción de animación no serán procesados por este método.