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.

AnimationNodeBlendSpace1D

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

Набор AnimationRootNode, размещенных на виртуальной оси, плавно переходящих между двумя соседними. Используется AnimationTree.

Описание

Ресурс, используемый AnimationNodeBlendTree.

AnimationNodeBlendSpace1D представляет собой виртуальную ось, на которую можно добавить любой тип AnimationRootNode с помощью add_blend_point(). Выводит линейную смесь двух AnimationRootNode, смежных с текущим значением.

Вы можете задать пределы оси с помощью min_space и max_space.

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

Свойства

BlendMode

blend_mode

0

float

cyclic_length

0.0

float

max_space

1.0

float

min_space

-1.0

float

snap

0.1

bool

sync

SyncMode

sync_mode

0

String

value_label

"value"

Методы

void

add_blend_point(node: AnimationRootNode, pos: float, at_index: int = -1, name: StringName = &"")

int

find_blend_point_by_name(name: StringName) const

int

get_blend_point_count() const

StringName

get_blend_point_name(point: int) const

AnimationRootNode

get_blend_point_node(point: int) const

float

get_blend_point_position(point: int) const

void

remove_blend_point(point: int)

void

reorder_blend_point(from_index: int, to_index: int)

void

set_blend_point_name(point: int, name: StringName)

void

set_blend_point_node(point: int, node: AnimationRootNode)

void

set_blend_point_position(point: int, pos: float)


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

enum BlendMode: 🔗

BlendMode BLEND_MODE_INTERPOLATED = 0

Интерполяция между анимациями линейная.

BlendMode BLEND_MODE_DISCRETE = 1

Пространство смешивания воспроизводит анимацию узла анимации, к которому ближе всего позиция смешивания. Полезно для покадровой 2D-анимации.

BlendMode BLEND_MODE_DISCRETE_CARRY = 2

Аналогично BLEND_MODE_DISCRETE, но запускает новую анимацию с позиции воспроизведения последней анимации.


enum SyncMode: 🔗

SyncMode SYNC_MODE_NONE = 0

Неактивные анимации замораживаются и не переходят к следующему этапу.

SyncMode SYNC_MODE_INDEPENDENT = 1

Неактивные анимации продвигаются с весом 0. Это эквивалентно предыдущему поведению sync = true.

SyncMode SYNC_MODE_CYCLIC_MUTABLE = 2

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

Примечание: Если вы примените AnimationNodeTimeSeek к результату при обработке анимаций разной длины, синхронизация будет нарушена. В таких случаях рекомендуется использовать AnimationNodeAnimation.use_custom_timeline для выравнивания длительности анимаций.

SyncMode SYNC_MODE_CYCLIC_CONSTANT = 3

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

Примечание: Если вы примените AnimationNodeTimeSeek к результату при обработке анимаций разной длины, синхронизация будет нарушена. В таких случаях рекомендуется использовать AnimationNodeAnimation.use_custom_timeline для выравнивания длительности анимаций.


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

BlendMode blend_mode = 0 🔗

Управляет интерполяцией между анимациями.


float cyclic_length = 0.0 🔗

  • void set_cyclic_length(value: float)

  • float get_cyclic_length()

Длительность цикла в секундах, используемая SYNC_MODE_CYCLIC_CONSTANT. Все анимации масштабируются по времени таким образом, чтобы за этот период они завершили один полный цикл. Для применения циклической синхронизации значение должно быть больше 0.


float max_space = 1.0 🔗

  • void set_max_space(value: float)

  • float get_max_space()

Верхний предел оси пространства смешивания для положения точек. См. add_blend_point().


float min_space = -1.0 🔗

  • void set_min_space(value: float)

  • float get_min_space()

Нижний предел оси пространства смешивания для положения точек. См. add_blend_point().


float snap = 0.1 🔗

Приращение позиции для привязки при перемещении точки по оси.


bool sync 🔗

  • void set_use_sync(value: bool)

  • bool is_using_sync()

Устарело: Use sync_mode instead.

Если true, режим синхронизации включен (эквивалентно SYNC_MODE_INDEPENDENT). Это свойство сохранено для обратной совместимости.


SyncMode sync_mode = 0 🔗

Управляет синхронизацией анимаций при смешивании. См. SyncMode для получения информации о доступных параметрах.


String value_label = "value" 🔗

  • void set_value_label(value: String)

  • String get_value_label()

Метка виртуальной оси пространства смешивания.


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

void add_blend_point(node: AnimationRootNode, pos: float, at_index: int = -1, name: StringName = &"") 🔗

Добавляет новую точку с именем name, соответствующую узлу node на виртуальной оси в позиции, заданной параметром pos. Вы можете вставить её в указанный индекс, используя аргумент at_index. Если оставить значение по умолчанию для at_index, точка будет добавлена в конец массива точек смешивания.

Примечание: Если имя не указано, в качестве идентификатора используется индекс. В будущем пустые имена будут объявлены устаревшими, поэтому рекомендуется явно передавать имя.


int find_blend_point_by_name(name: StringName) const 🔗

Возвращает индекс точки смешения с заданным name. Возвращает -1, если точка смешения с таким именем не найдена.


int get_blend_point_count() const 🔗

Возвращает количество точек на оси смешивания.


StringName get_blend_point_name(point: int) const 🔗

Возвращает имя точки смешения по индексу point.


AnimationRootNode get_blend_point_node(point: int) const 🔗

Возвращает AnimationNode, на который ссылается точка с индексом point.


float get_blend_point_position(point: int) const 🔗

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


void remove_blend_point(point: int) 🔗

Удаляет точку с индексом point из оси смешивания.


void reorder_blend_point(from_index: int, to_index: int) 🔗

Меняет местами точки смешивания в индексах from_index и to_index, заменив их позиции и свойства.


void set_blend_point_name(point: int, name: StringName) 🔗

Задает имя точки смешивания по индексу point. Если имя конфликтует с существующей точкой, будет автоматически сгенерировано уникальное имя.


void set_blend_point_node(point: int, node: AnimationRootNode) 🔗

Изменяет AnimationNode, на который ссылается точка с индексом point.


void set_blend_point_position(point: int, pos: float) 🔗

Обновляет положение точки с индексом point на оси смешивания.