众所周知,SetActorLocationAndRotation及其类似的接口可以设置Actor在游戏中的位置
,但它不是平滑的,而是跳变的,也就是说游戏下一帧会直接把Actor绘制到目标位置,跟瞬移一样。
那么如何要让它平滑地,smoothly移动到目标位置,就像摇臂摄像机一样呢?
实现方法(目前我只知道一种):
一、在 Tick 函数中计算插值并设置。
方法一
1. 实现
只需要确定几样东西:
- Tick 函数
- 待移动的 Actor(上图中的 ActorToTick)
- 目标变换(上图中的 m_TargetTransform)
2. 原理
调 FMath::VInterpTo 和 FMath::RInterpTo 计算出变换和旋转的插值(一个很小的步进值。对,就算再丝滑它的每次移动也是离散的!不是游戏引擎欺骗了你,而是硅片晶振太无能,只能发出离散的脉冲!)。然后调用刚刚提到的 SetActorLocationAndRotation。每次Tick都会移动一点,在高帧率的条件下看上去就会无比丝滑。