转换规则

用于控制状态机转换的规则指南

Windows
MacOS
Linux

创建转换规则

转换规则 是控制状态机内部流的方法,会沿着连接 状态导管 的引线自动创建。这些转换规则可以对变量值执行任意数量的检查和测试,目的是输出true或false值来确定动画是否发生转换。

要将状态或导管连接起来,可以 单击左键 并从一个状态(或导管)拖到另一个:

ConnectStates.png

建立连接后,会在连线内部出现一个循环方向的小图标,这就是转换规则:

TransitionRule.png

在将鼠标移到该图标上时,会显示一个指示,指出具体规则的内容:

TransitionRuleMouseOver.png

在该示例中,为了从 JumpLoop 转换到 JumpEnd,变量 IsInAir? **不得是**true。

还可以设置规则来确定双向转换流:

RulesBothWays.png

这意味着,可以设置规则以从一个状态退出,进入另一个状态,再设置一个规则以转换回到该状态。

编辑转换规则

双击 转换规则 将打开一个窗口,供您定义为了发生转换而必须满足的变量。

EditRule.png

类似于 蓝图,您可以在 我的蓝图(My Blueprint) 窗口中指定变量,并拖到图表中。通过将变量连接到各种条件,继而将条件连接到 结果(Result) 节点,可以定义为了发生转换而必须为_true(或_false)的变量。

有关蓝图入门的信息,请参考蓝图简介文档。

转换规则细节

在转换规则上 单击左键 时,细节(Details) 面板将会更新,并有更多选项可供使用。

TransitionDetails.png

属性

说明

转换优先顺序(Transition Priority Order)

转换的优先顺序。如果源自一个状态的多个转换同时为_true_,则优先级数字最小的转换具有最高优先级。

双向(Bidirectional)

确定转换是否为双向。

混合逻辑(Blend Logic)

指定要使用的转换逻辑:标准混合(Standard Blend)或自定义混合(Custom Blend)。选择自定义将使您进入混合图表来设置自定义混合转换。

转换规则共享(Transition Rule Sharing)

该选项允许设置是否可以与其他转换共享规则,或者使用另一个转换的规则。

基于状态中的序列播放器的自动规则(Automatic Rule Based on Sequence Player in State)

该选项尝试根据最相关播放器节点的剩余时间和转换的淡入淡出持续时间自动设置规则,忽略内部时间。

转换中断(Transition Interrupt)

设置触发权重阈值并指定通知状态类。

转换淡入淡出共享(Transition Crossfade Sharing)

使用现有转换淡入淡出混合或将现有转换淡入淡出提升为共享。

持续时间(Duration)

要应用于淡入淡出的持续时间。

模式(Mode)

应用于淡入淡出的混合类型。请参阅动画混合模式了解更多信息。

自定义混合曲线(Custom Blend Curve)

使用用户指定的混合曲线并在混合期间应用。

混合描述文件(Blend Profile)

用于按骨骼评估该转换的混合描述文件。

起始转换事件/自定义蓝图事件(Start Transition Event / Custom Blueprint Event)

在转换开始时从通知蓝图内部调用并执行事件。

结束转换事件/自定义蓝图事件(End Transition Event / Custom Blueprint Event)

在转换结束时从通知蓝图内部调用并执行事件。

中断转换事件/自定义蓝图事件(Interrupt Transition Event / Custom Blueprint Event)

在转换中断时从通知蓝图内部调用并执行事件。

其他注意事项

在处理子动画蓝图并覆盖状态机中的动画时,转换规则引用的动画不必在每个子动画蓝图中保持相同长度。在使用 剩余时间 等节点(可以用于确定动画中剩余多少时间并可以用作转换规则的一部分)时,此类节点能够在子动画蓝图中的动画被覆盖时正确响应动画长度的变化。

此外,您可以不必作为转换规则的一部分定位可能会变化或被覆盖的特定动画,而是改用多个基于类的GET节点,此类节点始终从源状态中拾取具有最高权重的动画(见下图)。

GetRelevantNodes.png

序号

节点

说明

1

获取相关动画长度(运动)(Get Relevant Anim Length (Movement))

获取源状态中最相关动画的长度,以秒为单位。

2

获取相关动画时间(运动)(Get Relevant Anim Time (Movement))

获取源状态中最相关动画的当前累计时间,以秒为单位。

3

获取相关动画时间分数(运动)(Get Relevant Anim Time Fraction (Movement))

获取源状态中最相关动画的当前累计时间占动画长度的分数。

4

获取相关动画剩余时间(运动)(Get Relevant Anim Time Remaining (Movement))

获取源状态中最相关动画的剩余时间,以秒为单位。

5

获取相关动画剩余时间分数(运动)(Get Relevant Anim Time Remaining Fraction (Movement))

获取源状态中最相关动画的剩余时间占动画持续时间的分数。

自定义混合节点

除了上述节点,自定义混合图表中还会公开一些信息,允许将它们用于多个镜头的自定义转换动画。

CustomBlendNodes.png

序号

节点

说明

1

状态权重(State Weight)

获取指定状态的混合权重。

2

获取经过的转换时间(Get Transition Time Elapsed)

获取指定转换的经过时间,以秒为单位。

3

获取经过的转换时间(比率)(Get Transition Time Elapsed (ratio))

获取经过的时间占指定动画淡入淡出持续时间的分数。

4

获取转换淡入淡出持续时间(Get Transition Crossfade Duration)

获取指定转换的淡入淡出持续时间。

您还可以使用引用资源播放器的GET节点,就像转换规则一样。

如果您理解虚幻中的动画编程,还可以使用原生Getter来改善性能。

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见