AnimationNodeStateMachine

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

Конечный автомат с несколькими AnimationRootNode, используемый AnimationTree.

Описание

Содержит несколько AnimationRootNode, представляющих состояния анимации, соединенные в граф. Переходы состояний можно настроить так, чтобы они происходили автоматически или через код, используя алгоритм кратчайшего пути. Извлеките объект AnimationNodeStateMachinePlayback из узла AnimationTree, чтобы управлять им программно.

var state_machine = $AnimationTree.get("parameters/playback")
state_machine.travel("some_state")

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

Свойства

bool

allow_transition_to_self

false

bool

reset_ends

false

StateMachineType

state_machine_type

0

Методы

void

add_node(name: StringName, node: AnimationNode, position: Vector2 = Vector2(0, 0))

void

add_transition(from: StringName, to: StringName, transition: AnimationNodeStateMachineTransition)

Vector2

get_graph_offset() const

AnimationNode

get_node(name: StringName) const

Array[StringName]

get_node_list() const

StringName

get_node_name(node: AnimationNode) const

Vector2

get_node_position(name: StringName) const

AnimationNodeStateMachineTransition

get_transition(idx: int) const

int

get_transition_count() const

StringName

get_transition_from(idx: int) const

StringName

get_transition_to(idx: int) const

bool

has_node(name: StringName) const

bool

has_transition(from: StringName, to: StringName) const

void

remove_node(name: StringName)

void

remove_transition(from: StringName, to: StringName)

void

remove_transition_by_index(idx: int)

void

rename_node(name: StringName, new_name: StringName)

void

replace_node(name: StringName, node: AnimationNode)

void

set_graph_offset(offset: Vector2)

void

set_node_position(name: StringName, position: Vector2)


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

enum StateMachineType: 🔗

StateMachineType STATE_MACHINE_TYPE_ROOT = 0

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

StateMachineType STATE_MACHINE_TYPE_NESTED = 1

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

StateMachineType STATE_MACHINE_TYPE_GROUPED = 2

Это сгруппированный конечный автомат, которым можно управлять из родительского конечного автомата. Он не работает независимо. Должен быть конечный автомат с state_machine_type STATE_MACHINE_TYPE_ROOT или STATE_MACHINE_TYPE_NESTED в родительском или предковом объекте.


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

bool allow_transition_to_self = false 🔗

  • void set_allow_transition_to_self(value: bool)

  • bool is_allow_transition_to_self()

Если true, разрешает телепортацию в собственное состояние с помощью AnimationNodeStateMachinePlayback.travel(). Когда опция сброса включена в AnimationNodeStateMachinePlayback.travel(), анимация перезапускается. Если false, при телепортации в собственное состояние ничего не происходит.


bool reset_ends = false 🔗

  • void set_reset_ends(value: bool)

  • bool are_ends_reset()

Если true, обрабатывайте кроссфейд (cross-fade) к начальному и конечному узлам как смешение с анимацией RESET.

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


StateMachineType state_machine_type = 0 🔗

Это свойство может определять процесс переходов для различных вариантов использования. См. также StateMachineType.


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

void add_node(name: StringName, node: AnimationNode, position: Vector2 = Vector2(0, 0)) 🔗

Добавляет новый узел анимации в график. Позиция параметра используется для отображения в редакторе.


void add_transition(from: StringName, to: StringName, transition: AnimationNodeStateMachineTransition) 🔗

Добавляет переход между заданными узлами анимации.


Vector2 get_graph_offset() const 🔗

Возвращает смещение отрисовки графика. Используется для отображения в редакторе.


AnimationNode get_node(name: StringName) const 🔗

Возвращает узел анимации с заданным именем.


Array[StringName] get_node_list() const 🔗

Возвращает список, содержащий имена всех узлов анимации в этом конечном автомате.


StringName get_node_name(node: AnimationNode) const 🔗

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


Vector2 get_node_position(name: StringName) const 🔗

Возвращает координаты указанного узла анимации. Используется для отображения в редакторе.


AnimationNodeStateMachineTransition get_transition(idx: int) const 🔗

Возвращает указанный переход.


int get_transition_count() const 🔗

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


StringName get_transition_from(idx: int) const 🔗

Возвращает начальный узел указанного перехода.


StringName get_transition_to(idx: int) const 🔗

Возвращает конечный узел указанного перехода.


bool has_node(name: StringName) const 🔗

Возвращает true, если граф содержит заданный узел анимации.


bool has_transition(from: StringName, to: StringName) const 🔗

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


void remove_node(name: StringName) 🔗

Удаляет указанный узел анимации из графика.


void remove_transition(from: StringName, to: StringName) 🔗

Удаляет переход между двумя указанными узлами анимации.


void remove_transition_by_index(idx: int) 🔗

Удаляет указанный переход по индексу.


void rename_node(name: StringName, new_name: StringName) 🔗

Переименовывает указанный узел анимации.


void replace_node(name: StringName, node: AnimationNode) 🔗

Заменяет заданный узел анимации новым узлом анимации.


void set_graph_offset(offset: Vector2) 🔗

Устанавливает смещение отрисовки графика. Используется для отображения в редакторе.


void set_node_position(name: StringName, position: Vector2) 🔗

Задает координаты узла анимации. Используется для отображения в редакторе.