速度突然变化时 Lerp 不平滑

Lerp not smooth when velocity changes abruptly

我有一个以可变速度移动的物体。它可以从0个速度单位到N个速度单位。

我正在调整相机角度以旋转并流畅且美观地观察物体,如下所示:

camera.eulerAngles = Vector3.Lerp(initialAngle, finalAngle, speed / N);

问题是当物体发生碰撞并且速度瞬间降低到0时,线性变化非常突然。

如何让它处理这种情况?在这种情况下,我想要快速插值,但不像我看到的那样是瞬时的。

您可以限制每次迭代的速度增量:

private const float MAX_DELTA = 0.1F;
private float prevSpeed;

private void UpdateRotation() {
    float currentSpeed = Mathf.Clamp(speed, prevSpeed - MAX_DELTA, prevSpeed + MAX_DELTA);
    camera.eulerAngles = Vector3.Lerp(initialAngle, finalAngle, currentSpeed / N);
    prevSpeed = currentSpeed;
}