【问题标题】:Lerp not smooth when velocity changes abruptly当速度突然变化时,Lerp 不平滑
【发布时间】:2021-03-03 14:01:02
【问题描述】:

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

我正在调整相机角度来旋转并平滑而美观地观察对象,如下所示:

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

问题是当物体发生碰撞并且速度瞬间减小到 0 时,lerp 的发生非常突然。

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

【问题讨论】:

    标签: unity3d 3d camera lerp


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多