Animation

Наследует: Resource < RefCounted < Object

Содержит данные, которые можно использовать для анимации чего угодно в движке.

Описание

Этот ресурс содержит данные, которые можно использовать для анимации чего угодно в движке. Анимации делятся на треки, и каждый трек должен быть связан с узлом. Состояние этого узла можно изменять с течением времени, добавляя к треку временные ключи (события).

# Это создает анимацию, которая заставляет узел «Enemy» двигаться вправо
# 100 пикселей за 2,0 секунды.
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_VALUE)
animation.track_set_path(track_index, "Enemy:position:x")
animation.track_insert_key(track_index, 0.0, 0)
animation.track_insert_key(track_index, 2.0, 100)
animation.length = 2.0

Анимации — это всего лишь контейнеры данных, и их необходимо добавлять к узлам, таким как AnimationPlayer, чтобы воспроизводить их. Треки анимации имеют разные типы, каждый со своим собственным набором выделенных методов. Проверьте TrackType, чтобы увидеть доступные типы.

Примечание: Для 3D-положения/вращения/масштаба рекомендуется использовать выделенные типы дорожек TYPE_POSITION_3D, TYPE_ROTATION_3D и TYPE_SCALE_3D вместо TYPE_VALUE из соображений производительности.

Обучающие материалы

Свойства

bool

capture_included

false

float

length

1.0

LoopMode

loop_mode

0

float

step

0.033333335

Методы

void

add_marker(name: StringName, time: float)

int

add_track(type: TrackType, at_position: int = -1)

StringName

animation_track_get_key_animation(track_idx: int, key_idx: int) const

int

animation_track_insert_key(track_idx: int, time: float, animation: StringName)

void

animation_track_set_key_animation(track_idx: int, key_idx: int, animation: StringName)

float

audio_track_get_key_end_offset(track_idx: int, key_idx: int) const

float

audio_track_get_key_start_offset(track_idx: int, key_idx: int) const

Resource

audio_track_get_key_stream(track_idx: int, key_idx: int) const

int

audio_track_insert_key(track_idx: int, time: float, stream: Resource, start_offset: float = 0, end_offset: float = 0)

bool

audio_track_is_use_blend(track_idx: int) const

void

audio_track_set_key_end_offset(track_idx: int, key_idx: int, offset: float)

void

audio_track_set_key_start_offset(track_idx: int, key_idx: int, offset: float)

void

audio_track_set_key_stream(track_idx: int, key_idx: int, stream: Resource)

void

audio_track_set_use_blend(track_idx: int, enable: bool)

Vector2

bezier_track_get_key_in_handle(track_idx: int, key_idx: int) const

Vector2

bezier_track_get_key_out_handle(track_idx: int, key_idx: int) const

float

bezier_track_get_key_value(track_idx: int, key_idx: int) const

int

bezier_track_insert_key(track_idx: int, time: float, value: float, in_handle: Vector2 = Vector2(0, 0), out_handle: Vector2 = Vector2(0, 0))

float

bezier_track_interpolate(track_idx: int, time: float) const

void

bezier_track_set_key_in_handle(track_idx: int, key_idx: int, in_handle: Vector2, balanced_value_time_ratio: float = 1.0)

void

bezier_track_set_key_out_handle(track_idx: int, key_idx: int, out_handle: Vector2, balanced_value_time_ratio: float = 1.0)

void

bezier_track_set_key_value(track_idx: int, key_idx: int, value: float)

int

blend_shape_track_insert_key(track_idx: int, time: float, amount: float)

float

blend_shape_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const

void

clear()

void

compress(page_size: int = 8192, fps: int = 120, split_tolerance: float = 4.0)

void

copy_track(track_idx: int, to_animation: Animation)

int

find_track(path: NodePath, type: TrackType) const

StringName

get_marker_at_time(time: float) const

Color

get_marker_color(name: StringName) const

PackedStringArray

get_marker_names() const

float

get_marker_time(name: StringName) const

StringName

get_next_marker(time: float) const

StringName

get_prev_marker(time: float) const

int

get_track_count() const

bool

has_marker(name: StringName) const

StringName

method_track_get_name(track_idx: int, key_idx: int) const

Array

method_track_get_params(track_idx: int, key_idx: int) const

void

optimize(allowed_velocity_err: float = 0.01, allowed_angular_err: float = 0.01, precision: int = 3)

int

position_track_insert_key(track_idx: int, time: float, position: Vector3)

Vector3

position_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const

void

remove_marker(name: StringName)

void

remove_track(track_idx: int)

int

rotation_track_insert_key(track_idx: int, time: float, rotation: Quaternion)

Quaternion

rotation_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const

int

scale_track_insert_key(track_idx: int, time: float, scale: Vector3)

Vector3

scale_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const

void

set_marker_color(name: StringName, color: Color)

int

track_find_key(track_idx: int, time: float, find_mode: FindMode = 0, limit: bool = false, backward: bool = false) const

bool

track_get_interpolation_loop_wrap(track_idx: int) const

InterpolationType

track_get_interpolation_type(track_idx: int) const

int

track_get_key_count(track_idx: int) const

float

track_get_key_time(track_idx: int, key_idx: int) const

float

track_get_key_transition(track_idx: int, key_idx: int) const

Variant

track_get_key_value(track_idx: int, key_idx: int) const

NodePath

track_get_path(track_idx: int) const

TrackType

track_get_type(track_idx: int) const

int

track_insert_key(track_idx: int, time: float, key: Variant, transition: float = 1)

bool

track_is_compressed(track_idx: int) const

bool

track_is_enabled(track_idx: int) const

bool

track_is_imported(track_idx: int) const

void

track_move_down(track_idx: int)

void

track_move_to(track_idx: int, to_idx: int)

void

track_move_up(track_idx: int)

void

track_remove_key(track_idx: int, key_idx: int)

void

track_remove_key_at_time(track_idx: int, time: float)

void

track_set_enabled(track_idx: int, enabled: bool)

void

track_set_imported(track_idx: int, imported: bool)

void

track_set_interpolation_loop_wrap(track_idx: int, interpolation: bool)

void

track_set_interpolation_type(track_idx: int, interpolation: InterpolationType)

void

track_set_key_time(track_idx: int, key_idx: int, time: float)

void

track_set_key_transition(track_idx: int, key_idx: int, transition: float)

void

track_set_key_value(track_idx: int, key: int, value: Variant)

void

track_set_path(track_idx: int, path: NodePath)

void

track_swap(track_idx: int, with_idx: int)

UpdateMode

value_track_get_update_mode(track_idx: int) const

Variant

value_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const

void

value_track_set_update_mode(track_idx: int, mode: UpdateMode)


Перечисления

enum TrackType: 🔗

TrackType TYPE_VALUE = 0

Значение отслеживает заданные значения в свойствах узла, но только те, которые можно интерполировать. Для 3D-позиции/вращения/масштаба рекомендуется использовать выделенных дорожек треков TYPE_POSITION_3D, TYPE_ROTATION_3D и TYPE_SCALE_3D вместо TYPE_VALUE по соображениям производительности.

TrackType TYPE_POSITION_3D = 1

Трехмерная дорожка положения (значения хранятся в Vector3).

TrackType TYPE_ROTATION_3D = 2

Трехмерная дорожка вращения (значения хранятся в Quaternions).

TrackType TYPE_SCALE_3D = 3

Дорожка 3D-масштаба (значения хранятся в Vector3).

TrackType TYPE_BLEND_SHAPE = 4

Орбита смешанной формы.

TrackType TYPE_METHOD = 5

Метод отслеживает вызовы функций с заданными аргументами для каждого ключа.

TrackType TYPE_BEZIER = 6

Дорожки Безье используются для интерполяции значения с использованием пользовательских кривых. Их также можно использовать для анимации подсвойств векторов и цветов (например, альфа-значение Color).

TrackType TYPE_AUDIO = 7

Аудиодорожки используются для воспроизведения аудиопотока с любым типом AudioStreamPlayer. Поток можно обрезать и предварительно просмотреть в анимации.

TrackType TYPE_ANIMATION = 8

Анимационные дорожки воспроизводят анимацию в других узлах AnimationPlayer.


enum InterpolationType: 🔗

InterpolationType INTERPOLATION_NEAREST = 0

Без интерполяции (ближайшее значение).

InterpolationType INTERPOLATION_LINEAR = 1

Линейная интерполяция.

InterpolationType INTERPOLATION_CUBIC = 2

Кубическая интерполяция. Выглядит более гладко, чем линейная интерполяция, но интерполяция более затратна. Придерживайтесь INTERPOLATION_LINEAR для сложных 3D-анимаций, импортированных из внешнего программного обеспечения, даже если это требует использования более высокой частоты кадров анимации взамен.

InterpolationType INTERPOLATION_LINEAR_ANGLE = 3

Линейная интерполяция с вращением по кратчайшему пути.

Примечание: Значение результата всегда нормализовано и может не совпадать со значением ключа.

InterpolationType INTERPOLATION_CUBIC_ANGLE = 4

Кубическая интерполяция с вращением по кратчайшему пути.

Примечание: Значение результата всегда нормализовано и может не совпадать со значением ключа.


enum UpdateMode: 🔗

UpdateMode UPDATE_CONTINUOUS = 0

Обновляйте между ключевыми кадрами и сохраняйте значение.

UpdateMode UPDATE_DISCRETE = 1

Обновление на ключевых кадрах.

UpdateMode UPDATE_CAPTURE = 2

То же, что и UPDATE_CONTINUOUS, но работает как флаг для захвата значения текущего объекта и выполнения интерполяции в некоторых методах. См. также AnimationMixer.capture(), AnimationPlayer.playback_auto_capture и AnimationPlayer.play_with_capture().


enum LoopMode: 🔗

LoopMode LOOP_NONE = 0

В обоих случаях воспроизведение анимации остановится.

LoopMode LOOP_LINEAR = 1

В обоих концах анимации она будет повторяться без изменения направления воспроизведения.

LoopMode LOOP_PINGPONG = 2

Повторяет воспроизведение и обратное воспроизведение в обоих концах анимации.


enum LoopedFlag: 🔗

LoopedFlag LOOPED_FLAG_NONE = 0

Этот флаг указывает, что анимация выполняется без зацикливания.

LoopedFlag LOOPED_FLAG_END = 1

Этот флаг указывает на то, что анимация достигла конца и сразу после обработки цикла.

LoopedFlag LOOPED_FLAG_START = 2

Этот флаг указывает на то, что анимация достигла начала анимации и сразу после обработки цикла.


enum FindMode: 🔗

FindMode FIND_MODE_NEAREST = 0

Находит ближайший временной ключ.

FindMode FIND_MODE_APPROX = 1

Находит только ключ с приблизительным временем.

FindMode FIND_MODE_EXACT = 2

Находит только ключ с соответствующим временем.


Описания свойств

bool capture_included = false 🔗

  • bool is_capture_included()

Возвращает true, если трек захвата включен. Это кэшированное значение только для чтения для производительности.


float length = 1.0 🔗

  • void set_length(value: float)

  • float get_length()

Общая длина анимации (в секундах).

Замечание: Длина не ограничена последним ключом, так как он может находиться до или после конца для обеспечения корректной интерполяции и зацикливания.


LoopMode loop_mode = 0 🔗

Определяет поведение обоих концов временной шкалы анимации во время её воспроизведения. Это указывает, следует ли перезапускать анимацию и как это сделать, а также используется для корректной интерполяции циклов анимации.


float step = 0.033333335 🔗

Значение шага анимации.


Описания метода

void add_marker(name: StringName, time: float) 🔗

Добавляет маркер к этой анимации.


int add_track(type: TrackType, at_position: int = -1) 🔗

Добавляет дорожку в анимацию.


StringName animation_track_get_key_animation(track_idx: int, key_idx: int) const 🔗

Возвращает имя анимации по ключу, идентифицированному key_idx. track_idx должен быть индексом дорожки анимации.


int animation_track_insert_key(track_idx: int, time: float, animation: StringName) 🔗

Вставляет ключ со значением animation в указанное time (в секундах). track_idx должен быть индексом анимационной дорожки.


void animation_track_set_key_animation(track_idx: int, key_idx: int, animation: StringName) 🔗

Устанавливает ключ, идентифицированный key_idx, в значение animation. track_idx должен быть индексом анимационной дорожки.


float audio_track_get_key_end_offset(track_idx: int, key_idx: int) const 🔗

Возвращает конечное смещение ключа, идентифицированного key_idx. track_idx должен быть индексом аудиодорожки.

Конечное смещение — это количество секунд, обрезанных в конце аудиопотока.


float audio_track_get_key_start_offset(track_idx: int, key_idx: int) const 🔗

Возвращает начальное смещение ключа, идентифицированного key_idx. track_idx должен быть индексом аудиодорожки.

Начальное смещение — это количество секунд, отрезанных в начале аудиопотока.


Resource audio_track_get_key_stream(track_idx: int, key_idx: int) const 🔗

Возвращает аудиопоток ключа, идентифицированного key_idx. track_idx должен быть индексом аудиодорожки.


int audio_track_insert_key(track_idx: int, time: float, stream: Resource, start_offset: float = 0, end_offset: float = 0) 🔗

Вставляет ключ аудиодорожки в указанное time в секундах. track_idx должен быть индексом аудиодорожки.

stream — ресурс AudioStream для воспроизведения. start_offset — количество секунд, обрезанных в начале аудиопотока, а end_offset — в конце.


bool audio_track_is_use_blend(track_idx: int) const 🔗

Возвращает true, если трек в track_idx будет смешан с другими анимациями.


void audio_track_set_key_end_offset(track_idx: int, key_idx: int, offset: float) 🔗

Устанавливает конечное смещение ключа, идентифицированного key_idx, на значение offset. track_idx должен быть индексом аудиодорожки.


void audio_track_set_key_start_offset(track_idx: int, key_idx: int, offset: float) 🔗

Устанавливает начальное смещение ключа, идентифицированного key_idx, на значение offset. track_idx должен быть индексом аудиодорожки.


void audio_track_set_key_stream(track_idx: int, key_idx: int, stream: Resource) 🔗

Устанавливает поток ключа, идентифицированного key_idx, на значение stream. track_idx должен быть индексом аудиодорожки.


void audio_track_set_use_blend(track_idx: int, enable: bool) 🔗

Устанавливает, будет ли трек смешиваться с другими анимациями. Если true, громкость воспроизведения звука меняется в зависимости от значения смешивания.


Vector2 bezier_track_get_key_in_handle(track_idx: int, key_idx: int) const 🔗

Возвращает дескриптор ключа, идентифицированного key_idx. track_idx должен быть индексом дорожки Безье.


Vector2 bezier_track_get_key_out_handle(track_idx: int, key_idx: int) const 🔗

Возвращает выходной дескриптор ключа, идентифицированного key_idx. track_idx должен быть индексом дорожки Безье.


float bezier_track_get_key_value(track_idx: int, key_idx: int) const 🔗

Возвращает значение ключа, идентифицированного key_idx. track_idx должен быть индексом дорожки Безье.


int bezier_track_insert_key(track_idx: int, time: float, value: float, in_handle: Vector2 = Vector2(0, 0), out_handle: Vector2 = Vector2(0, 0)) 🔗

Вставляет ключ дорожки Безье в указанное time в секундах. track_idx должен быть индексом дорожки Безье.

in_handle — вес левой стороны добавленной точки кривой Безье, out_handle — вес правой стороны, а value — фактическое значение в этой точке.


float bezier_track_interpolate(track_idx: int, time: float) const 🔗

Возвращает интерполированное значение в указанном time (в секундах). track_idx должен быть индексом дорожки Безье.


void bezier_track_set_key_in_handle(track_idx: int, key_idx: int, in_handle: Vector2, balanced_value_time_ratio: float = 1.0) 🔗

Устанавливает входной дескриптор ключа, идентифицированного key_idx, на значение in_handle. track_idx должен быть индексом дорожки Безье.


void bezier_track_set_key_out_handle(track_idx: int, key_idx: int, out_handle: Vector2, balanced_value_time_ratio: float = 1.0) 🔗

Устанавливает выходной дескриптор ключа, идентифицированного key_idx, на значение out_handle. track_idx должен быть индексом дорожки Безье.


void bezier_track_set_key_value(track_idx: int, key_idx: int, value: float) 🔗

Устанавливает значение ключа, идентифицированного key_idx, на заданное значение. track_idx должен быть индексом дорожки Безье.


int blend_shape_track_insert_key(track_idx: int, time: float, amount: float) 🔗

Вставляет ключ в заданную дорожку blend shape. Возвращает индекс ключа.


float blend_shape_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const 🔗

Возвращает интерполированное значение формы смешивания в указанное время (в секундах). track_idx должен быть индексом трека формы смешивания.


void clear() 🔗

Очистить анимацию (удалить все дорожки и сбросить всё).


void compress(page_size: int = 8192, fps: int = 120, split_tolerance: float = 4.0) 🔗

Сжать анимацию и все ее дорожки на месте. Это заставит track_is_compressed() возвращать true после вызова этой Animation. Сжатые дорожки требуют меньше памяти для воспроизведения и предназначены для использования в сложных 3D-анимациях (например, катсценах), импортированных из внешнего 3D-программного обеспечения. Сжатие происходит с потерями, но разница обычно не заметна в реальных условиях.

Примечание: Сжатые дорожки имеют различные ограничения (например, невозможность редактирования в редакторе), поэтому используйте сжатые анимации только в том случае, если они вам действительно нужны.


void copy_track(track_idx: int, to_animation: Animation) 🔗

Добавляет новый трек в to_animation, который является копией указанного трека из этой анимации.


int find_track(path: NodePath, type: TrackType) const 🔗

Возвращает индекс указанной дорожки. Если дорожка не найдена, возвращает -1.


StringName get_marker_at_time(time: float) const 🔗

Возвращает имя маркера, расположенного в указанное время.


Color get_marker_color(name: StringName) const 🔗

Возвращает цвет указанного маркера.


PackedStringArray get_marker_names() const 🔗

Возвращает все маркеры в этой анимации, отсортированные по возрастанию времени.


float get_marker_time(name: StringName) const 🔗

Возвращает время указанного маркера.


StringName get_next_marker(time: float) const 🔗

Возвращает ближайший маркер, который следует после указанного времени. Если такого маркера не существует, возвращается пустая строка.


StringName get_prev_marker(time: float) const 🔗

Возвращает ближайший маркер, который предшествует указанному времени. Если такого маркера не существует, возвращается пустая строка.


int get_track_count() const 🔗

Возвращает количество дорожек в анимации.


bool has_marker(name: StringName) const 🔗

Возвращает true, если эта анимация содержит маркер с указанным именем.


StringName method_track_get_name(track_idx: int, key_idx: int) const 🔗

Возвращает имя метода для дорожки методов.


Array method_track_get_params(track_idx: int, key_idx: int) const 🔗

Возвращает значения аргументов, которые необходимо вызвать в дорожке метода для заданного ключа в заданной дорожке.


void optimize(allowed_velocity_err: float = 0.01, allowed_angular_err: float = 0.01, precision: int = 3) 🔗

Оптимизируйте анимацию и все ее дорожки на месте. Это сохранит только столько ключей, сколько необходимо для удержания анимации в указанных границах.


int position_track_insert_key(track_idx: int, time: float, position: Vector3) 🔗

Вставляет ключ в заданную 3D-трек позиции. Возвращает индекс ключа.


Vector3 position_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const 🔗

Возвращает интерполированное значение позиции в указанное время (в секундах). track_idx должен быть индексом 3D-трека позиции.


void remove_marker(name: StringName) 🔗

Удаляет маркер с указанным именем из этой анимации.


void remove_track(track_idx: int) 🔗

Удаляет дорожку, указав индекс дорожки.


int rotation_track_insert_key(track_idx: int, time: float, rotation: Quaternion) 🔗

Вставляет ключ в заданную 3D-дорожку вращения. Возвращает индекс ключа.


Quaternion rotation_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const 🔗

Возвращает интерполированное значение вращения в указанное время (в секундах). track_idx должен быть индексом 3D-трека вращения.


int scale_track_insert_key(track_idx: int, time: float, scale: Vector3) 🔗

Вставляет ключ в заданную 3D-шкалу трека. Возвращает индекс ключа.


Vector3 scale_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const 🔗

Возвращает интерполированное значение масштаба в указанное время (в секундах). track_idx должен быть индексом 3D-масштабной дорожки.


void set_marker_color(name: StringName, color: Color) 🔗

Устанавливает цвет указанного маркера.


int track_find_key(track_idx: int, time: float, find_mode: FindMode = 0, limit: bool = false, backward: bool = false) const 🔗

Находит индекс ключа по времени в заданном треке. При желании находит его только в том случае, если указано приблизительное/точное время.

Если limit равно true, он не возвращает ключи за пределами диапазона анимации.

Если backward равно true, направление меняется на противоположное в методах, которые полагаются на однонаправленную обработку.

Например, в случае, если find_mode равно FIND_MODE_NEAREST, если в текущей позиции сразу после искомого нет ключа, первый найденный ключ извлекается путем поиска перед позицией, но если backward равно true, первый найденный ключ извлекается после позиции.


bool track_get_interpolation_loop_wrap(track_idx: int) const 🔗

Возвращает true, если дорожка в track_idx оборачивает цикл интерполяции. Новые дорожки оборачивают цикл интерполяции по умолчанию.


InterpolationType track_get_interpolation_type(track_idx: int) const 🔗

Возвращает тип интерполяции данной дорожки.


int track_get_key_count(track_idx: int) const 🔗

Возвращает количество ключей в заданной дорожке.


float track_get_key_time(track_idx: int, key_idx: int) const 🔗

Возвращает время, в котором расположен ключ.


float track_get_key_transition(track_idx: int, key_idx: int) const 🔗

Возвращает кривую перехода (плавность) для определенной клавиши (см. встроенную математическую функцию @GlobalScope.ease()).


Variant track_get_key_value(track_idx: int, key_idx: int) const 🔗

Возвращает значение заданной клавиши в заданной дорожке.


NodePath track_get_path(track_idx: int) const 🔗

Получает путь к дорожке. Для получения дополнительной информации о формате пути см. `` метод track_set_path``.


TrackType track_get_type(track_idx: int) const 🔗

Получает тип дорожки.


int track_insert_key(track_idx: int, time: float, key: Variant, transition: float = 1) 🔗

Вставляет общий ключ в указанный трек. Возвращает индекс ключа.


bool track_is_compressed(track_idx: int) const 🔗

Возвращает true, если трек сжат, false в противном случае. См. также compress().


bool track_is_enabled(track_idx: int) const 🔗

Возвращает true, если трек с индексом track_idx включен.


bool track_is_imported(track_idx: int) const 🔗

Возвращает true, если указанная дорожка импортирована. В противном случае возвращает false.


void track_move_down(track_idx: int) 🔗

Перемещает дорожку вниз.


void track_move_to(track_idx: int, to_idx: int) 🔗

Изменяет индексную позицию дорожки track_idx на ту, которая определена в to_idx.


void track_move_up(track_idx: int) 🔗

Перемещает дорожку вверх.


void track_remove_key(track_idx: int, key_idx: int) 🔗

Удаляет ключ по индексу из данной дорожки.


void track_remove_key_at_time(track_idx: int, time: float) 🔗

Удаляет ключ в time в указанном треке.


void track_set_enabled(track_idx: int, enabled: bool) 🔗

Включает/отключает данную дорожку. По умолчанию дорожки включены.


void track_set_imported(track_idx: int, imported: bool) 🔗

Устанавливает, импортирован ли данная дорожка.


void track_set_interpolation_loop_wrap(track_idx: int, interpolation: bool) 🔗

Если true, дорожка с track_idx завершает цикл интерполяции.


void track_set_interpolation_type(track_idx: int, interpolation: InterpolationType) 🔗

Устанавливает тип интерполяции заданного трека.


void track_set_key_time(track_idx: int, key_idx: int, time: float) 🔗

Устанавливает время существующего ключа.


void track_set_key_transition(track_idx: int, key_idx: int, transition: float) 🔗

Устанавливает кривую перехода (плавность) для определенной клавиши (см. встроенную математическую функцию @GlobalScope.ease()).


void track_set_key_value(track_idx: int, key: int, value: Variant) 🔗

Устанавливает значение существующего ключа.


void track_set_path(track_idx: int, path: NodePath) 🔗

Устанавливает путь дорожки. Пути должны быть допустимыми путями дерева сцены к узлу и должны быть указаны, начиная с AnimationMixer.root_node, который будет воспроизводить анимацию. Дорожки, которые управляют свойствами или костями, должны добавлять свое имя после пути, разделенного ":".

Например, "character/skeleton:ankle" или "character/mesh:transform/local".


void track_swap(track_idx: int, with_idx: int) 🔗

Меняет индексную позицию дорожки track_idx на дорожку with_idx.


UpdateMode value_track_get_update_mode(track_idx: int) const 🔗

Возвращает режим обновления дорожки значений.


Variant value_track_interpolate(track_idx: int, time_sec: float, backward: bool = false) const 🔗

Возвращает интерполированное значение в указанное время (в секундах). track_idx должен быть индексом значения track.

backward в основном влияет на направление извлечения ключа track с UPDATE_DISCRETE, преобразованным AnimationMixer.ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS для соответствия результату с track_find_key().


void value_track_set_update_mode(track_idx: int, mode: UpdateMode) 🔗

Устанавливает режим обновления дорожки значений.