AnimationNodeStateMachine¶
继承: AnimationRootNode < AnimationNode < Resource < RefCounted < Object
具有多个AnimationRootNode的状态机,由AnimationTree使用。
描述¶
包含多个表示动画状态的AnimationRootNode,连接成一个图。可以配置状态转换自动发生或通过代码实现,使用最短路径算法。可以从AnimationTree节点中检索AnimationNodeStateMachinePlayback对象,以便通过编程方式对其进行控制。n .. tabs:
.. code-tab:: s3script
var state_machine = $AnimationTree.get("parameters/playback")
state_machine.travel("some_state")
.. code-tab:: csharp
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) 🔗
设置动画节点的坐标。用于在编辑器中显示。