AnimationNodeStateMachine
继承: AnimationRootNode < AnimationNode < Resource < RefCounted < Object
带有多个 AnimationRootNode 的状态机,用于 AnimationTree。
描述
包含表示动画状态的多个 AnimationRootNode,以图的形式连接。可以使用最短路径算法,将节点过渡配置为自动发生或通过代码发生。要以编程的方式控制过渡,请从 AnimationTree 节点获取 AnimationNodeStateMachinePlayback 对象。
示例:
GDScriptC#
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_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
,则将与开始和结束节点的淡入淡出视为与 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)) 🔗
向图中添加一个新的动画节点。position
用于在编辑器中显示。
void add_transition(from: StringName, to: StringName, transition: AnimationNodeStateMachineTransition) 🔗
在给定动画节点之间添加一个过渡。
Vector2 get_graph_offset() const 🔗
返回图的绘制偏移。用于在编辑器中显示。
AnimationNode get_node(name: StringName) 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) 🔗
设置动画节点的坐标。用于在编辑器中显示。