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

Успадковує: AnimationMixer < Node < Object

Вузол, який використовується для відтворення анімації.

Опис

Програвач анімації використовується для відтворення анімацій загального призначення. Він містить словник ресурсів AnimationLibrary і спеціальний час змішування між переходами анімації.

Деякі методи та властивості використовують один ключ для безпосереднього посилання на анімацію. Ці ключі відформатовані як ключ для бібліотеки, за яким йде коса риска, а потім ключ для анімації в бібліотеці, наприклад "рух/біг". Якщо ключ бібліотеки є порожнім рядком (відомий як бібліотека за замовчуванням), коса риска пропускається, оскільки це той самий ключ, який використовується бібліотекою.

AnimationPlayer краще підходить, ніж Tween, для складніших анімацій, наприклад із нетривіальними хронометражами. Його також можна використовувати поверх Tween, якщо редактор доріжок анімації зручніший, ніж робити це в коді.

Оновлення цільових властивостей анімацій відбувається на кадрі процесу.

Посібники

Властивості

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

Методи

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)


Сигнали

animation_changed(old_name: StringName, new_name: StringName) 🔗

Випускається, коли анімація в черзі відтворюється після завершення попередньої анімації. Дивіться також queue().

Примітка: Сигнал не випромінюється, коли анімацію змінено за допомогою play() або AnimationTree.


current_animation_changed(anim_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 🔗

  • void set_movie_quit_on_finish_enabled(value: bool)

  • bool is_movie_quit_on_finish_enabled()

Якщо true і механізм запущено в режимі Movie Maker (див. MovieWriter), завершує роботу механізму за допомогою SceneTree.quit(), щойно відтворення анімації в цьому AnimationPlayer завершиться. Коли двигун вимикається з цієї причини, друкується повідомлення.

**Примітка: ** Це підпорядковується тій самій логіці, що й сигнал AnimationMixer.animation_finished, тому він не вийде з механізму, якщо анімація налаштована на повторення.


bool playback_auto_capture = true 🔗

  • void set_auto_capture(value: bool)

  • bool is_auto_capture()

Якщо true, перед автоматичним відтворенням виконується AnimationMixer.capture(). Це означає, що лише play_with_capture() виконується з аргументами за замовчуванням замість play().

Примітка. Інтерполяція захоплення виконується, лише якщо анімація містить трек захоплення. Дивіться також Animation.UPDATE_CAPTURE.


float playback_auto_capture_duration = -1.0 🔗

  • void set_auto_capture_duration(value: float)

  • float get_auto_capture_duration()

Дивіться також play_with_capture() і AnimationMixer.capture().

Якщо playback_auto_capture_duration є від’ємним значенням, тривалістю встановлюється інтервал між поточною позицією та першою клавішею.


EaseType playback_auto_capture_ease_type = 0 🔗

  • void set_auto_capture_ease_type(value: EaseType)

  • EaseType get_auto_capture_ease_type()

Легкий тип інтерполяції захоплення. Дивіться також 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 🔗

  • void set_default_blend_time(value: float)

  • float get_default_blend_time()

Час за замовчуванням для змішування анімації. Діапазон від 0 до 4096 з точністю до 0.01.


float speed_scale = 1.0 🔗

  • void set_speed_scale(value: float)

  • float get_speed_scale()

Коефіцієнт масштабування швидкості. Наприклад, якщо це значення 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.

Повертає режим виклику, який використовується для треків "Метод виклику".


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

Повертає список ключів анімації, які зараз стоять у черзі для відтворення.


NodePath get_root() const 🔗

Застаріло: Use AnimationMixer.root_node instead.

Повертає вузол, з якого будуть проходити посилання на шлях вузла.


float get_section_end_time() const 🔗

Повертає час закінчення розділу, який зараз відтворюється.


float get_section_start_time() const 🔗

Повертає час початку розділу, який зараз відтворюється.


bool has_section() 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()

bool is_playing() const 🔗

Повертає true, якщо анімація зараз відтворюється (навіть якщо speed_scale та/або custom_speed рівні 0).


void pause() 🔗

Призупиняє відтворення поточної анімації. current_animation_position буде збережено, а виклик play() або play_backwards() без аргументів або з тією самою назвою анімації, що й assigned_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`` порожнє, воно визначає :ref:`assigned_animation<class_AnimationPlayer_property_assigned_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. Якщо ви хочете пропустити анімацію і випромінювати сигнал, скористайтеся AnimationMixe.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.

Встановлює режим виклику, який використовується для треків "Метод виклику".


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, стан анімації не оновлюється візуально.

Примітка: Доріжки відтворення методу / аудіо / анімації не будуть оброблятися цим методом.