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.
Checking the stable version of the documentation...
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) 🔗
Задает координаты узла анимации. Используется для отображения в редакторе.