Files
UnrealEngine/Engine/Documentation/Source/Shared/GraphNodes/AnimationStateMachine/StateNodes.CHN.udn
2025-05-18 13:04:45 +08:00

102 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

INTSourceChangelist:3108692
Availability:NoPublish
Title:状态机
Crumbs:
Description:借助状态机,你可以将骨架动画拆分成各个状态,从而全面控制从一个状态混合到另一个状态的方式。
[EXCERPT:DummyExcerpt]
[/EXCERPT:DummyExcerpt]
[EXCERPT:UAnimStateNode]
从概念上讲理解状态的最佳方式是将其视作动画图表的有条理的部分角色或骨架网格体将有规律地混入及混出此状态。然后你可以转换到图表的此部分或从图表的此部分向其他部分转换。例如你可能为角色的动画创建了一个“闲散Idle”状态而该状态可能仅包含单个动画。
下图中就是这样的一个“闲散Idle”状态从状态机查看
![](State.png)
双击该状态之后你将看到该“闲散Idle”状态中包含的简单图表。
![](IdleStateInside.png)
但是角色开始移动之后它们会转换到“移动Movement”状态它可以定义在表面上的横向移动例如行走或奔跑。
![](MoveState.png)
此状态中可能包含由角色的速度和移动方向定义的[混合空间](Engine/Animation/Blendspaces)。
![](MovementInside.png)
状态自身不带引脚,也没有输入的引脚,因为系统设计目标是让它们拥有更自由的布局形式。要将一个状态与任何其他状态相连接,只需从其外部边界拖出引线即可。你也可以使用此方法来创建新状态,与在蓝图中创建新节点类似。
![](DragWire.png)
[/EXCERPT:UAnimStateNode]
[EXCERPT:UAnimStateConduitNode]
导管是更加高级且可共享的转换资源。在不同的状态之间转换规则是简单的“1对1”关系而导管则可以采取“1对多”、“多对1”或“多对多”的形式。
![](ConduitNode.png)
例如你可能会碰到这样的情况当角色被杀死时可能需要播放多个动画。你可以先从指示“该角色在生命值小于或等于0时进入死亡状态”的简单转换规则开始。但是如果转换进入导管而非状态你可以执行一系列检查以搞清楚玩家的死亡原因中弹、被刺、爆炸、被车撞、头部遭钝击等然后从此处建立分支以进入各种各样的独立死亡状态。
略微简化后的图表与下图相似:
![](ConduitGraph.png)
导管图表的内部看起来与转换规则相似:
![](ConduitInside.png)
从导管出来的实际转换规则即可确定死因类型,从而允许角色混合到相应的状态。
[/EXCERPT:UAnimStateConduitNode]
[EXCERPT:UAnimStateTransitionNode]
定义好状态后,你需要能够控制骨架网格体从一个状态转换到另一个状态的方式。这时需要用到转换规则。转换规则沿连接状态的引线自动创建。
![](TransitionRule.png)
转换规则可对变量值执行任意数量的检查和测试目的都是输出一个True/False值。此布尔输出将决定动画是否能通过转换。
![](TransitionRuleInside.png)
在本示例中我们测试角色移动速度的数值。如果数值大于10则启用转换。在这种情况下角色可以从“闲散Idle”状态转换到“移动Movement”状态。然后可以使用完全不同的规则使其转换回“闲散Idle”状态。例如此示例中有一个从“移动Movement”移向“闲散Idle”的转换规则。
![](TransitionRuleReturn.png)
此规则将进行检查,以确定用于转换 _到_“移动Movement”状态的相同值是否不再为True。
![](TransitionRuleReturnInside.png)
有关转换规则及其属性的更多信息,请参阅[转换规则文档](Engine/Animation/StateMachines\TransitionRules)。
[/EXCERPT:UAnimStateTransitionNode]
[EXCERPT:UAnimGraphNode_Root]
在动画图表中处理完动画后,使用引线将最终动画姿势结果与此节点连接起来,以将它应用给该网格体。
[/EXCERPT:UAnimGraphNode_Root]
[EXCERPT:UAnimGraphNode_StateMachine]
状态机是状态、转换和导管的集合。状态机将基于你在状态转换中定义的规则更改状态。从概念上讲,每个状态都是独立的动画图表,可以输出动画姿势。你可在包含状态机的动画图表中进一步操纵该动画姿势。
[/EXCERPT:UAnimGraphNode_StateMachine]