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

Eredita: AnimationMixer < Node < Object

Un nodo utilizzato per la riproduzione di animazioni.

Descrizione

Un riproduttore di animazioni è utilizzato per la riproduzione generale di animazioni. Contiene un dizionario di risorse AnimationLibrary e tempi di fusione personalizzati tra le transizioni delle animazioni.

Alcuni metodi e proprietà usano una singola chiave per fare riferimento direttamente a un'animazione. Queste chiavi sono formattate come la chiave per la libreria, seguita da una barra obliqua, e poi la chiave per l'animazione all'interno della libreria, per esempio "movement/run". Se la chiave della libreria è una stringa vuota (nota come la libreria predefinita), la barra obliqua è omessa, essendo la stessa chiave utilizzata dalla libreria.

AnimationPlayer è più adatto di Tween per animazioni più complesse, per esempio quelle con tempi non banali. Può anche essere utilizzato invece di Tween se l'editor di tracce di animazione è più conveniente di scriverlo in codice.

L'aggiornamento delle proprietà di destinazione delle animazioni avviene al frame di processo.

Tutorial

Proprietà

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

Metodi

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)


Segnali

animation_changed(old_name: StringName, new_name: StringName) 🔗

Emesso quando un'animazione in coda d'attesa viene riprodotta dopo che la animazione precedente ha terminato. Vedi anche queue().

Nota: Il segnale non è emesso quando l'animazione è cambiata via play() o da un AnimationTree.


current_animation_changed(anim_name: StringName) 🔗

Emesso quando current_animation cambia.


Enumerazioni

enum AnimationProcessCallback: 🔗

AnimationProcessCallback ANIMATION_PROCESS_PHYSICS = 0

Deprecato: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS.

AnimationProcessCallback ANIMATION_PROCESS_IDLE = 1

Deprecato: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE.

AnimationProcessCallback ANIMATION_PROCESS_MANUAL = 2

Deprecato: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL.


enum AnimationMethodCallMode: 🔗

AnimationMethodCallMode ANIMATION_METHOD_CALL_DEFERRED = 0

Deprecato: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED.

AnimationMethodCallMode ANIMATION_METHOD_CALL_IMMEDIATE = 1

Deprecato: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE.


Descrizioni delle proprietà

StringName assigned_animation 🔗

Se in riproduzione, la chiave dell'animazione attuale, altrimenti, l'ultima animazione riprodotta. Quando impostato, questo cambia l'animazione, ma non la riprodurrà a meno che è già in riproduzione. Vedi anche current_animation.


StringName autoplay = &"" 🔗

La chiave dell'animazione da riprodurre quando la scena è caricata.


StringName current_animation = &"" 🔗

La chiave dell'animazione attualmente in gioco. Se nessuna animazione si sta riproducendo, il valore della proprietà è una stringa vuota. Cambiare questo valore non riavvia l'animazione. Vedi play()Per ulteriori informazioni sulla riproduzione delle animazioni.

Nota: Nonostante questa proprietà appaia nell'Ispettore, non è pensata per essere modificata, e non è salvata nella scena. Questa proprietà è utilizzata principalmente per ottenere l'animazione attualmente in riproduzione, e internamente per le tracce di riproduzione animazioni. Per ulteriori informazioni, vedi Animation.


float current_animation_length 🔗

  • float get_current_animation_length()

La durata (in secondi) dell'animazione attualmente in riproduzione.


float current_animation_position 🔗

  • float get_current_animation_position()

La posizione (in secondi) dell'animazione attualmente in riproduzione.


bool movie_quit_on_finish = false 🔗

  • void set_movie_quit_on_finish_enabled(value: bool)

  • bool is_movie_quit_on_finish_enabled()

Se true e il motore è in esecuzione in modalità Movie Maker (vedi MovieWriter), il motore si chiude con SceneTree.quit() non appena un'animazione ha terminato la riproduzione in questo AnimationPlayer. Un messaggio è stampato quando il motore si chiude per questo motivo.

Nota: Questo obbedisce alla stessa logica del segnale AnimationMixer.animation_finished, perciò non chiuderà il motore se l'animazione è impostata a ripetersi.


bool playback_auto_capture = true 🔗

  • void set_auto_capture(value: bool)

  • bool is_auto_capture()

Se true, esegue AnimationMixer.capture() automaticamente prima della riproduzione. Questo significa che solo play_with_capture() è eseguito con gli argomenti predefiniti invece di play().

Nota: L'interpolazione della cattura è solo eseguita se l'animazione contiene una traccia di cattura. Vedi anche Animation.UPDATE_CAPTURE.


float playback_auto_capture_duration = -1.0 🔗

  • void set_auto_capture_duration(value: float)

  • float get_auto_capture_duration()

Vedi anche play_with_capture() e AnimationMixer.capture().

Se playback_auto_capture_duration è un valore negativo, la durata è impostata all'intervallo tra la posizione attuale e la prima chiave.


EaseType playback_auto_capture_ease_type = 0 🔗

  • void set_auto_capture_ease_type(value: EaseType)

  • EaseType get_auto_capture_ease_type()

The ease type of the capture interpolation. See also EaseType.


TransitionType playback_auto_capture_transition_type = 0 🔗

Il tipo di transizione dell'interpolazione di cattura. Vedi anche TransitionType.


float playback_default_blend_time = 0.0 🔗

  • void set_default_blend_time(value: float)

  • float get_default_blend_time()

Il tempo predefinito in cui mischiare animazioni. L'intervallo va da 0 a 4096 avente una precisione di 0,01.


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

Il rapporto di scala della velocità. Ad esempio, se questo valore è 1, l'animazione è riprodotta alla velocità normale. Se è 0.5, allora è riprodotta alla velocità dimezzata. Se è 2, allora è riprodotta alla velocità doppia.

Se impostato a un valore negativo, l'animazione è riprodotta al rovescio. Se impostato su 0, l'animazione non avanza.


Descrizioni dei metodi

StringName animation_get_next(animation_from: StringName) const 🔗

Restituisce la chiave dell'animazione che è in coda per essere riprodotta dopo l'animazione animation_from.


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

Attiva l'animazione animation_to quando l'animazione animation_from conclude.


void clear_queue() 🔗

Pulisce tutte le animazioni in coda d'attesa e non riprodotte.


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

Restituisce il tempo di fusione (in secondi) tra due animazioni, riferite dalle loro chiavi.


AnimationMethodCallMode get_method_call_mode() const 🔗

Deprecato: Use AnimationMixer.callback_mode_method instead.

Restituisce la modalità di chiamata utilizzata per le tracce "Chiama metodo".


float get_playing_speed() const 🔗

Restituisce la velocità di riproduzione effettiva dell'animazione attuale o 0 se non è riprodotta. Questa velocità è la proprietà speed_scale moltiplicata per l'argomento custom_speed specificato quando si chiama il metodo play().

Restituisce un valore negativo se l'animazione corrente si sta riproducendo all'indietro.


AnimationProcessCallback get_process_callback() const 🔗

Deprecato: Use AnimationMixer.callback_mode_process instead.

Restituisce la notifica di processo in cui aggiornare le animazioni.


Array[StringName] get_queue() 🔗

Restituisce un elenco di chiavi di animazione che sono attualmente in coda per essere riprodotte.


NodePath get_root() const 🔗

Deprecato: Use AnimationMixer.root_node instead.

Restituisce il nodo da cui i riferimenti di percorso del nodo partono.


float get_section_end_time() const 🔗

Restituisce il tempo di fine della sezione attualmente riprodotta.


float get_section_start_time() const 🔗

Restituisce il tempo di inizio della sezione attualmente riprodotta.


bool has_section() const 🔗

Restituisce true se un'animazione è attualmente in riproduzione con una sezione.


bool is_animation_active() const 🔗

Returns true if the an animation is currently active. An animation is active if it was played by calling play() and was not finished yet, or was stopped by calling stop().

This can be used to check whether an animation is currently paused or stopped.

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 🔗

Restituisce true se un'impostazione è attualmente in riproduzione (anche se speed_scale e/o custom_speed sono 0).


void pause() 🔗

Pausa l'animazione attualmente in riproduzione. Il current_animation_position sarà mantenuto e chiamando play() o play_backwards() senza argomenti o con lo stesso nome dell'animazione assigned_animation riprenderà l'animazione dalla posizione di riproduzione corrente.

Vedi anche stop().


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

Riproduce l'animazione con la chiave name. È possibile impostare tempi e velocità di fusione personalizzati.

L'opzione from_end ha effetto solo quando si passa a una nuova traccia di animazione o se è la stessa traccia ma all'inizio o alla fine. Non ha effetto quando si riprende la riproduzione messa in pausa nel mezzo di un'animazione. Se custom_speed è negativo e from_end è true, l'animazione sarà riprodotta all'indietro (il che equivale a chiamare play_backwards()).

AnimationPlayer tiene traccia della sua animazione attuale o dell'ultima riprodotta con assigned_animation. Se questo metodo viene chiamato con la stessa animazione con name o senza il parametro name, l'animazione assegnata riprenderà la riproduzione se era stata messa in pausa.

Nota: L'animazione verrà aggiornata la prossima volta che l'AnimationPlayer verrà elaborato. Se altre variabili vengono aggiornate allo stesso tempo che questo metodo viene chiamato, potrebbero essere aggiornate troppo presto. Per eseguire l'aggiornamento immediatamente, chiama advance(0).


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

Riproduce l'animazione con la chiave name al rovescio.

Questo metodo è una abbreviazione per play() con custom_speed = -1.0 e from_end = true, quindi vedi la sua descrizione per ulteriori informazioni.


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) 🔗

Riproduce l'animazione con la chiave name e la sezione a partire da start_time e che termina a end_time. Vedi anche play().

Impostando start_time su un valore al di fuori dell'intervallo dell'animazione, verrà utilizzato l'inizio dell'animazione, mentre impostando end_time su un valore al di fuori dell'intervallo dell'animazione, verrà utilizzata la fine dell'animazione. start_time non può essere uguale a end_time.


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

Riproduce l'animazione con la chiave name e la sezione a partire da start_time e che termina a end_time al rovescio.

Questo metodo è una abbreviazione per play_section() con custom_speed = -1.0 e from_end = true, quindi vedi la sua descrizione per ulteriori informazioni.


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) 🔗

Riproduce l'animazione con la chiave name e la sezione che inizia da start_marker e termina su end_marker.

Se il marcatore di inizio è vuoto, la sezione inizia dall'inizio dell'animazione. Se il marcatore di fine è vuoto, la sezione termina alla fine dell'animazione. Vedi anche play().


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

Riproduce l'animazione con la chiave name e la sezione a partire da start_marker e che termina a end_marker al rovescio.

Questo metodo è una abbreviazione per play_section_with_markers() con custom_speed = -1.0 e from_end = true, quindi vedi la sua descrizione per ulteriori informazioni.


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) 🔗

Vedi anche AnimationMixer.capture().

È possibile utilizzare questo metodo per fornire opzioni di acquisizione più dettagliate rispetto a quelle eseguite da playback_auto_capture. Quando playback_auto_capture è false, questo metodo è quasi uguale al seguente:

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

Se name è vuoto, specifica assigned_animation.

Se duration è un valore negativo, la durata è impostata sull'intervallo tra la posizione attuale e la prima chiave, quando from_end è true, utilizza invece l'intervallo tra la posizione attuale e l'ultima chiave.

Nota: duration tiene conto di speed_scale, ma non di custom_speed, perché la cache di acquisizione viene interpolata con il risultato della fusione e il risultato potrebbe contenere più animazioni.


void queue(name: StringName) 🔗

Mette in coda un'animazione per la riproduzione una volta completata l'animazione attuale e tutte le animazioni precedentemente messe in coda.

Nota: Se è in corso la riproduzione di un'animazione in ripetizione, l'animazione in coda non verrà mai riprodotta a meno che l'animazione in ripetizione non venga interrotta in qualche modo.


void reset_section() 🔗

Ripristina la sezione attuale. Non fa nulla se non è stata impostata una sezione.


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

Cerca l'animazione fino al punto seconds nel tempo (in secondi). Se update è true, anche l'animazione viene aggiornata, altrimenti viene aggiornata in fase di processo. Gli eventi compresi tra il frame attuale e seconds vengono saltati.

Se update_only è true, le tracce di riproduzione metodi/audio/animazioni non saranno elaborate.

Nota: Cercare fino alla fine dell'animazione non emette AnimationMixer.animation_finished. Se si desidera saltare l'animazione ed emettere il segnale, usa AnimationMixer.advance().


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

Restituisce il tempo di fusione (in secondi) tra due animazioni, riferite dalle loro chiavi.


void set_method_call_mode(mode: AnimationMethodCallMode) 🔗

Deprecato: Use AnimationMixer.callback_mode_method instead.

Imposta la modalità di chiamata utilizzata per le tracce "Chiama metodo".


void set_process_callback(mode: AnimationProcessCallback) 🔗

Deprecato: Use AnimationMixer.callback_mode_process instead.

Imposta la notifica di processo in cui aggiornare le animazioni.


void set_root(path: NodePath) 🔗

Deprecato: Use AnimationMixer.root_node instead.

Imposta il nodo da cui i riferimenti di percorso del nodo partono.


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

Modifica i tempi di inizio e fine della sezione riprodotta. La posizione di riproduzione attuale verrà limitata all'interno della nuova sezione. Vedi anche play_section().


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

Modifica i marcatori di inizio e fine della sezione riprodotta. La posizione di riproduzione attuale verrà limitata all'interno della nuova sezione. Vedi anche play_section_with_markers().

Se l'argomento è vuoto, la sezione utilizza l'inizio o la fine dell'animazione. Se entrambi sono vuoti, significa che la sezione non è impostata.


void stop(keep_state: bool = false) 🔗

Interrompe l'animazione attualmente in riproduzione. La posizione di animazione è ripristinata a 0 e custom_speed è ripristinato a 1.0. Vedi anche pause().

Se keep_state è true, lo stato di animazione non è aggiornato visivamente.

Nota: Le tracce di riproduzione metodi/audio/animazioni non saranno elaborate da questo metodo.