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.

AnimationNodeBlendSpace2D

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

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

Описание

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

AnimationNodeBlendSpace2D представляет собой виртуальное 2D-пространство, на котором размещены AnimationRootNode. Выводит линейное смешивание трех смежных анимаций с использованием веса Vector2. Смежный в этом контексте означает три AnimationRootNode, составляющие треугольник, содержащий текущее значение.

Вы можете добавить вершины в пространство смешивания с помощью add_blend_point() и автоматически триангулировать его, установив auto_triangles на true. В противном случае используйте add_triangle() и remove_triangle() для триангуляции пространства смешивания вручную.

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

Свойства

bool

auto_triangles

true

BlendMode

blend_mode

0

float

cyclic_length

0.0

Vector2

max_space

Vector2(1, 1)

Vector2

min_space

Vector2(-1, -1)

Vector2

snap

Vector2(0.1, 0.1)

bool

sync

SyncMode

sync_mode

0

String

x_label

"x"

String

y_label

"y"

Методы

void

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

void

add_triangle(x: int, y: int, z: int, at_index: int = -1)

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

Vector2

get_blend_point_position(point: int) const

int

get_triangle_count() const

int

get_triangle_point(triangle: int, point: int)

void

remove_blend_point(point: int)

void

remove_triangle(triangle: 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: Vector2)


Сигналы

triangles_updated() 🔗

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


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

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 для выравнивания длительности анимаций.


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

bool auto_triangles = true 🔗

  • void set_auto_triangles(value: bool)

  • bool get_auto_triangles()

Если true, пространство смешивания триангулируется автоматически. Сетка обновляется каждый раз, когда вы добавляете или удаляете точки с помощью add_blend_point() и remove_blend_point().


BlendMode blend_mode = 0 🔗

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


float cyclic_length = 0.0 🔗

  • void set_cyclic_length(value: float)

  • float get_cyclic_length()

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


Vector2 max_space = Vector2(1, 1) 🔗

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


Vector2 min_space = Vector2(-1, -1) 🔗

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


Vector2 snap = Vector2(0.1, 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 x_label = "x" 🔗

Имя оси X пространства смешивания.


String y_label = "y" 🔗

Имя оси Y пространства смешивания.


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

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

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

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


void add_triangle(x: int, y: int, z: int, at_index: int = -1) 🔗

Создает новый треугольник, используя три точки x, y и z. Треугольники могут перекрываться. Вы можете вставить треугольник в определенный индекс, используя аргумент 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 🔗

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


Vector2 get_blend_point_position(point: int) const 🔗

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


int get_triangle_count() const 🔗

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


int get_triangle_point(triangle: int, point: int) 🔗

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


void remove_blend_point(point: int) 🔗

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


void remove_triangle(triangle: int) 🔗

Удаляет треугольник с индексом triangle из пространства смешивания.


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

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