速度突然变化时 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;
}
我有一个以可变速度移动的物体。它可以从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;
}