UE4动画状态机中判定动画剩余时间

UE4中的动画状态机和U3D有一些区别,虽然两者都是基于转换规则连线的方式进行动画状态间的切换,但是UE4为了降低设计之间的耦合,把转换规则的条件设定为必须项,并且条件是可以直接在转换规则内编辑,对于刚刚上手UE4的朋友来说,如果之前用过U3D,会非常的苦恼,因为U3D的动画可以直接用转换规则加空判断条件连接,那么A动画状态和B动画状态之间的转换完全可以依靠状态机自行控制!而UE4则必须你要提供给状态机一个转换规则,只要规则成立则,则立刻执行规则后的动画B(B-C之间的规则如果成立,则会直接又跳到C,不执行B,以此类推),其实对于一些设计场景,这并不是我们想要的结果,例如下面的例子。

现在假设我们有一个场景是需要制作一个角色出场动画,只播放一次,然后切入待机状态,如果是U3D我们只需要增加一个出场动作,然后连接转换规则连线,切换条件开关不去设置,运行后,状态机先执行出场动画,然后过度到待机动画!

但是UE4中,由于所有的动画状态切换都需要通过转换规则,而转换规则必须提供给状态机一个标识布尔变量,也就是说,我们需要自己控制动画切换,当然手段很多!其实可以直接通过状态机已经提供的功能函数来完成,就是需要提供的切换布尔变量开关,我们使用动画播放时间来判断!具体实现可以参照下面的蓝图!

Time Remaining函数 判断当前状态机中播放动画剩余时间

切记如果此动画在其他地方也有播放,那么此处的判断依旧执行并且会成立,也就是说状态机会乱掉!

在转换规则中,请使用标准混合(standard blend),或是你自己调整下自定义混合,否则混合会非常生硬!

感谢各位!

UE版本 V4.16.3

添加评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注