UE4蓝图 控制物体移动缩放且不受帧率影响的方法

最近在做虚拟仿真相关场景的研究,之前使用过场动画驱动物体移动和缩放,现在需要使用外部数据驱动UE4关卡中的物体,于是参照在unity里的做法,将物体移动和缩放的方法放在Tick事件中,使用Delta Seconds作为基础参数乘以一个速度变量。在正常状态下运行良好,如果将鼠标切出窗口,帧率明显下降,代码执行也变慢了,物体移动固定长度的时间延长了。熟悉unity的可以得出UE4中Tick相当于unity的Update方法,易受到机器性能影响,但UE4中没有Unity的FixedUpdate类似的方法。还是尝试了一些方法,做了一些测试得出一些结论。

一、对于实时性要求不高,重复性动作的

建议使用Matinee、Sequence动画解决。动画帧率是固定的,在不同性能设备上同一时间位置基本没有误差。还可以在蓝图中使用TimeLine节点,使用直接赋值的方式,避免TimeLine轨迹的计算。

用TimeLine直接给坐标赋值,不会受到帧率影响
UE4蓝图 控制物体移动缩放且不受帧率影响的方法
用TimeLine轨迹经过计算后给坐标赋值,还是会受到帧率影响
UE4蓝图 控制物体移动缩放且不受帧率影响的方法

二、实时性要求较高的

1.对于有目标点和移动时间间隔的

使用 MoveComponentTo 节点,只适用于移动和旋转,没有找到关于缩放的类似节点
UE4蓝图 控制物体移动缩放且不受帧率影响的方法

2.无目标点或时间间隔的

还是在Tick事件中,基础时间变量使用 GetWorldDeltaSeconds 节点,此处适用于移动、旋转和缩放。
UE4蓝图 控制物体移动缩放且不受帧率影响的方法

总结

在Tick事件中,使用 GetWorldDeltaSeconds 节点,代替Tick自带的DeltaSeconds节点即可。