AnimationPlayer
Наследует: AnimationMixer < Node < Object
Узел, используемый для воспроизведения анимации.
Описание
Анимационный проигрыватель используется для воспроизведения анимаций общего назначения. Он содержит словарь ресурсов AnimationLibrary и настраиваемые времена смешивания между анимационными переходами.
Некоторые методы и свойства используют один ключ для прямой ссылки на анимацию. Эти ключи форматируются как ключ для библиотеки, за которым следует косая черта, затем ключ для анимации в библиотеке, например "movement/run". Если ключ библиотеки представляет собой пустую строку (известную как библиотека по умолчанию), косая черта опускается, являясь тем же ключом, который используется библиотекой.
AnimationPlayer лучше подходит, чем Tween, для более сложных анимаций, например, с нетривиальными временными интервалами. Его также можно использовать вместо Tween, если редактор трека анимации удобнее, чем делать это в коде.
Обновление целевых свойств анимаций происходит в кадре процесса (process).
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методы
animation_get_next(animation_from: StringName) const |
|
void |
animation_set_next(animation_from: StringName, animation_to: StringName) |
void |
|
get_blend_time(animation_from: StringName, animation_to: StringName) const |
|
get_method_call_mode() const |
|
get_playing_speed() const |
|
get_process_callback() const |
|
get_root() const |
|
get_section_end_time() const |
|
get_section_start_time() const |
|
has_section() const |
|
is_animation_active() const |
|
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 |
|
void |
seek(seconds: float, update: bool = false, update_only: bool = false) |
void |
set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) |
void |
|
void |
|
void |
|
void |
set_section(start_time: float = -1, end_time: float = -1) |
void |
set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"") |
void |
Сигналы
animation_changed(old_name: StringName, new_name: StringName) 🔗
Вызывается, когда анимация в очереди воспроизводится после завершения предыдущей анимации. См. также queue().
Примечание: Сигнал не вызывается, когда анимация изменяется через play() или AnimationTree.
current_animation_changed(name: StringName) 🔗
Вызывается при изменении current_animation.
Перечисления
enum AnimationProcessCallback: 🔗
AnimationProcessCallback ANIMATION_PROCESS_PHYSICS = 0
Устарело: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS.
AnimationProcessCallback ANIMATION_PROCESS_IDLE = 1
Устарело: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_IDLE.
AnimationProcessCallback ANIMATION_PROCESS_MANUAL = 2
Устарело: See AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_MANUAL.
enum AnimationMethodCallMode: 🔗
AnimationMethodCallMode ANIMATION_METHOD_CALL_DEFERRED = 0
Устарело: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_DEFERRED.
AnimationMethodCallMode ANIMATION_METHOD_CALL_IMMEDIATE = 1
Устарело: See AnimationMixer.ANIMATION_CALLBACK_MODE_METHOD_IMMEDIATE.
Описания свойств
StringName assigned_animation 🔗
void set_assigned_animation(value: StringName)
StringName get_assigned_animation()
Если воспроизводится, ключ текущей анимации, в противном случае — последняя воспроизведенная анимация. Если установлено, это изменяет анимацию, но не воспроизводит ее, если она уже не воспроизводится. См. также current_animation.
StringName autoplay = &"" 🔗
void set_autoplay(value: StringName)
StringName get_autoplay()
Ключ анимации, воспроизводимой при загрузке сцены.
StringName current_animation = &"" 🔗
void set_current_animation(value: StringName)
StringName get_current_animation()
Ключ текущей воспроизводимой анимации. Если анимация не воспроизводится, значением свойства является пустая строка. Изменение этого значения не перезапускает анимацию. См. play() для получения дополнительной информации о воспроизведении анимаций.
Примечание: Хотя это свойство отображается в Инспекторе, оно не предназначено для редактирования и не сохраняется в сцене. Это свойство в основном используется для получения текущей воспроизводимой анимации и внутренне для дорожек воспроизведения анимации. Для получения дополнительной информации см. Animation.
float current_animation_length 🔗
float get_current_animation_length()
Продолжительность (в секундах) текущей воспроизводимой анимации.
float current_animation_position 🔗
float get_current_animation_position()
Позиция (в секундах) текущей воспроизводимой анимации.
bool movie_quit_on_finish = false 🔗
Если true и движок работает в режиме Movie Maker (см. MovieWriter), выходит из движка с помощью SceneTree.quit(), как только анимация завершит воспроизведение в этом AnimationPlayer. Сообщение выводится, когда движок завершает работу по этой причине.
Примечание: Это подчиняется той же логике, что и сигнал AnimationMixer.animation_finished, поэтому он не выйдет из движка, если анимация установлена как циклическая.
bool playback_auto_capture = true 🔗
Если true, выполняет AnimationMixer.capture() перед воспроизведением автоматически. Это означает, что выполняется только play_with_capture() с аргументами по умолчанию вместо play().
Примечание: Интерполяция захвата выполняется только в том случае, если анимация содержит трек захвата. См. также Animation.UPDATE_CAPTURE.
float playback_auto_capture_duration = -1.0 🔗
См. также play_with_capture() и AnimationMixer.capture().
Если playback_auto_capture_duration имеет отрицательное значение, длительность устанавливается на интервал между текущей позицией и первым ключом.
EaseType playback_auto_capture_ease_type = 0 🔗
Тип легкости интерполяции захвата. См. также EaseType.
TransitionType playback_auto_capture_transition_type = 0 🔗
void set_auto_capture_transition_type(value: TransitionType)
TransitionType get_auto_capture_transition_type()
Тип перехода интерполяции захвата. См. также TransitionType.
float playback_default_blend_time = 0.0 🔗
Время по умолчанию для смешивания анимаций. Диапазон от 0 до 4096 с точностью 0,01.
Коэффициент масштабирования скорости. Например, если это значение равно 1, то анимация воспроизводится с нормальной скоростью. Если это 0.5, то она воспроизводится с половинной скоростью. Если это 2, то она воспроизводится с двойной скоростью.
Если установлено отрицательное значение, анимация воспроизводится в обратном направлении. Если установлено значение 0, анимация не будет продвигаться.
Описания метода
StringName animation_get_next(animation_from: StringName) const 🔗
Возвращает ключ анимации, которая ставится в очередь на воспроизведение после анимации animation_from.
void animation_set_next(animation_from: StringName, animation_to: StringName) 🔗
Запускает анимацию animation_to после завершения анимации animation_from.
void clear_queue() 🔗
Очищает все поставленные в очередь невоспроизведенные анимации.
float get_blend_time(animation_from: StringName, animation_to: StringName) const 🔗
Возвращает время смешивания (в секундах) между двумя анимациями, на которые ссылаются их ключи.
AnimationMethodCallMode get_method_call_mode() const 🔗
Устарело: Use AnimationMixer.callback_mode_method instead.
Возвращает режим вызова, используемый для треков "Call Method".
float get_playing_speed() const 🔗
Возвращает фактическую скорость воспроизведения текущей анимации или 0, если не воспроизводится. Эта скорость — свойство speed_scale, умноженное на аргумент custom_speed, указанный при вызове метода play().
Возвращает отрицательное значение, если текущая анимация воспроизводится в обратном направлении.
AnimationProcessCallback get_process_callback() const 🔗
Устарело: Use AnimationMixer.callback_mode_process instead.
Возвращает уведомление о процессе, в котором необходимо обновить анимацию.
Array[StringName] get_queue() 🔗
Возвращает список ключей анимации, которые в данный момент находятся в очереди на воспроизведение.
Устарело: Use AnimationMixer.root_node instead.
Возвращает узел, из которого будут перемещаться ссылки на пути узлов.
float get_section_end_time() const 🔗
Возвращает время окончания воспроизводимого в данный момент раздела.
float get_section_start_time() const 🔗
Возвращает время начала раздела, воспроизводимого в данный момент.
Возвращает true, если в данный момент воспроизводится анимация с секцией.
bool is_animation_active() const 🔗
Возвращает true Если анимация сейчас активна. Анимация активна, если она была проиграна с помощью метода play() и еще не завершилась, или была остановлена с помощью метода stop().
Может быть использовано для проверки того что анимация на паузе или остановлена.
var is_paused = not is_playing() and is_animation_active()
var is_stopped = not is_playing() and not is_animation_active()
Возвращает true, если в данный момент воспроизводится анимация (даже если speed_scale и/или custom_speed равны 0).
void pause() 🔗
Приостанавливает текущую воспроизводимую анимацию. current_animation_position будет сохранен, а вызов play() или play_backwards() без аргументов или с тем же именем анимации, что и assignment_animation, возобновит анимацию.
См. также stop().
void play(name: StringName = &"", custom_blend: float = -1, custom_speed: float = 1.0, from_end: bool = false) 🔗
Воспроизводит анимацию с ключом name. Можно задать пользовательское время смешивания и скорость.
Параметр from_end влияет только при переключении на новый трек анимации или на тот же трек, но в начале или конце. Он не влияет на возобновление воспроизведения, которое было приостановлено в середине анимации. Если custom_speed отрицательный, а from_end равен true, анимация будет воспроизводиться в обратном направлении (что эквивалентно вызову play_backwards()).
AnimationPlayer отслеживает свою текущую или последнюю воспроизведенную анимацию с помощью assigned_animation. Если этот метод вызывается с той же анимацией name или без параметра name, назначенная анимация возобновит воспроизведение, если она была приостановлена.
Примечание: Анимация будет обновлена при следующей обработке AnimationPlayer. Если другие переменные обновляются одновременно с этим вызовом, они могут обновиться слишком рано. Чтобы выполнить обновление немедленно, вызовите advance(0).
void play_backwards(name: StringName = &"", custom_blend: float = -1) 🔗
Воспроизводит анимацию с ключом name в обратном порядке.
Этот метод является сокращением для play() с custom_speed = -1.0 и from_end = true, поэтому см. его описание для получения дополнительной информации.
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) 🔗
Воспроизводит анимацию с ключом name и разделом, начинающимся с start_time и заканчивающимся на end_time. См. также play().
Установка start_time на значение вне диапазона анимации означает, что вместо этого будет использоваться начало анимации, а установка end_time на значение вне диапазона анимации означает, что вместо этого будет использоваться конец анимации. start_time не может быть равен end_time.
void play_section_backwards(name: StringName = &"", start_time: float = -1, end_time: float = -1, custom_blend: float = -1) 🔗
Воспроизводит анимацию с ключом name и разделом, начинающимся с start_time и заканчивающимся на end_time в обратном порядке.
Этот метод является сокращением для play_section() с custom_speed = -1.0 и from_end = true, см. его описание для получения дополнительной информации.
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) 🔗
Воспроизводит анимацию с ключом name и разделом, начинающимся с start_marker и заканчивающимся на end_marker.
Если начальный маркер пуст, раздел начинается с начала анимации. Если конечный маркер пуст, раздел заканчивается в конце анимации. См. также play().
void play_section_with_markers_backwards(name: StringName = &"", start_marker: StringName = &"", end_marker: StringName = &"", custom_blend: float = -1) 🔗
Воспроизводит анимацию с ключом name и разделом, начинающимся с start_marker и заканчивающимся на end_marker в обратном порядке.
Этот метод является сокращением для play_section_with_markers() с custom_speed = -1.0 и from_end = true, см. его описание для получения дополнительной информации.
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) 🔗
См. также AnimationMixer.capture().
Вы можете использовать этот метод для использования более подробных параметров захвата, чем те, которые выполняются playback_auto_capture. Когда playback_auto_capture имеет значение false, этот метод почти такой же, как следующий:
capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)
Если name пусто, он указывает assignment_animation.
Если duration отрицательное значение, длительность устанавливается на интервал между текущей позицией и первым ключом, когда from_end равен true, вместо этого используется интервал между текущей позицией и последним ключом.
Примечание: duration учитывает speed_scale, но custom_speed — нет, поскольку кэш захвата интерполируется с результатом смешивания, и результат может содержать несколько анимаций.
void queue(name: StringName) 🔗
Ставит анимацию в очередь на воспроизведение после завершения текущей анимации и всех ранее поставленных в очередь анимаций.
Примечание: Если в данный момент воспроизводится зацикленная анимация, поставленная в очередь анимация никогда не будет воспроизведена, если только зацикленная анимация не будет каким-либо образом остановлена.
void reset_section() 🔗
Сбрасывает текущую секцию. Ничего не делает, если раздел не был установлен.
void seek(seconds: float, update: bool = false, update_only: bool = false) 🔗
Ищет анимацию до момента времени seconds (в секундах). Если update равен true, анимация также обновляется, в противном случае она обновляется во время процесса. События между текущим кадром и seconds пропускаются.
Если update_only равен true, метод / аудио / дорожки воспроизведения анимации не будут обработаны.
Примечание: Поиск до конца анимации не выдает AnimationMixer.animation_finished. Если вы хотите пропустить анимацию и выдать сигнал, используйте AnimationMixer.advance().
void set_blend_time(animation_from: StringName, animation_to: StringName, sec: float) 🔗
Указывает время смешивания (в секундах) между двумя анимациями, на которые ссылаются их ключи.
void set_method_call_mode(mode: AnimationMethodCallMode) 🔗
Устарело: Use AnimationMixer.callback_mode_method instead.
Устанавливает режим вызова, используемый для треков "Call Method".
void set_process_callback(mode: AnimationProcessCallback) 🔗
Устарело: Use AnimationMixer.callback_mode_process instead.
Устанавливает уведомление о процессе, в котором необходимо обновить анимацию.
void set_root(path: NodePath) 🔗
Устарело: Use AnimationMixer.root_node instead.
Устанавливает узел, из которого будут перемещаться ссылки на пути узлов.
void set_section(start_time: float = -1, end_time: float = -1) 🔗
Изменяет время начала и окончания воспроизводимого раздела. Текущая позиция воспроизведения будет зафиксирована в новом разделе. См. также play_section().
void set_section_with_markers(start_marker: StringName = &"", end_marker: StringName = &"") 🔗
Изменяет начальный и конечный маркеры воспроизводимого раздела. Текущая позиция воспроизведения будет зафиксирована в новом разделе. См. также play_section_with_markers().
Если аргумент пустой, раздел использует начало или конец анимации. Если оба пусты, это означает, что раздел не установлен.
void stop(keep_state: bool = false) 🔗
Останавливает текущую воспроизводимую анимацию. Позиция анимации сбрасывается на 0, а custom_speed сбрасывается на 1.0. См. также pause().
Если keep_state равен true, состояние анимации визуально не обновляется.
Примечание: Метод / аудио / дорожки воспроизведения анимации не будут обрабатываться этим методом.