AnimationNodeStateMachine
Наследует: AnimationRootNode < AnimationNode < Resource < RefCounted < Object
Конечный автомат с несколькими AnimationRootNode, используемый AnimationTree.
Описание
Содержит несколько AnimationRootNode, представляющих состояния анимации, соединенные в граф. Переходы состояний можно настроить так, чтобы они происходили автоматически или через код, используя алгоритм кратчайшего пути. Извлеките объект AnimationNodeStateMachinePlayback из узла AnimationTree, чтобы управлять им программно.
var state_machine = $AnimationTree.get("parameters/playback")
state_machine.travel("some_state")
var stateMachine = GetNode<AnimationTree>("AnimationTree").Get("parameters/playback") as AnimationNodeStateMachinePlayback;
stateMachine.Travel("some_state");
Обучающие материалы
Свойства
|
||
|
||
|
Методы
void |
add_node(name: StringName, node: AnimationNode, position: Vector2 = Vector2(0, 0)) |
void |
add_transition(from: StringName, to: StringName, transition: AnimationNodeStateMachineTransition) |
get_graph_offset() const |
|
get_node(name: StringName) const |
|
get_node_list() const |
|
get_node_name(node: AnimationNode) const |
|
get_node_position(name: StringName) const |
|
get_transition(idx: int) const |
|
get_transition_count() const |
|
get_transition_from(idx: int) const |
|
get_transition_to(idx: int) const |
|
has_node(name: StringName) const |
|
has_transition(from: StringName, to: StringName) const |
|
void |
remove_node(name: StringName) |
void |
remove_transition(from: StringName, to: StringName) |
void |
|
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 🔗
Если true, разрешает телепортацию в собственное состояние с помощью AnimationNodeStateMachinePlayback.travel(). Когда опция сброса включена в AnimationNodeStateMachinePlayback.travel(), анимация перезапускается. Если false, при телепортации в собственное состояние ничего не происходит.
Если true, обрабатывайте кроссфейд (cross-fade) к начальному и конечному узлам как смешение с анимацией RESET.
В большинстве случаев, когда дополнительные кроссфейды выполняются в родительском AnimationNode конечного автомата, установка этого свойства в false и сопоставление времени кроссфейда родительского AnimationNode и начального и конечного узлов конечного автомата дает хорошие результаты.
StateMachineType state_machine_type = 0 🔗
void set_state_machine_type(value: StateMachineType)
StateMachineType get_state_machine_type()
Это свойство может определять процесс переходов для различных вариантов использования. См. также 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) 🔗
Задает координаты узла анимации. Используется для отображения в редакторе.