将一个整数添加到超过 360 度的相机旋转



我在这里做的是在按键上一次将相机旋转 90 度,使用

currentpos = transform.eulerAngles + new Vector3 (0, 90, 0);

transform.eulerAngles = Vector3.Lerp (transform.eulerAngles, currentpos, Time.deltaTime * speed); 

问题是当相机达到 360 度时,它想尝试将角度更改为 450,因此卡在无限旋转循环中。我必须使用欧拉角,因为相机倾斜 45 度,欧拉角度全局旋转而不是局部旋转

我的问题是我如何让它停止无限循环并从 360 度变为 90 度,以及不以相反的方式旋转,例如我尝试过

if (transform.eulerAngles.y == 360){
        currentpos = transform.eulerAngles + new Vector3 (0, 0, 0);
    }

但是,Vector3.Lerp随后以相反的方向旋转回 0,而不是经过 360 度以达到 0。

我建议使用Mathf.LerpAngle()

无论您设置的角度超过 360(

例如 360 + x)还是仅设置角度 x,它都会像您期望的那样插值,而无需尝试向相反方向拍摄。

我希望这有所帮助!

编辑:正如@JoeBlow上面的评论中提到的,我还建议使用任意一种 Rotate 方法(在变换和四元数上),而不是直接设置目标值。在大多数情况下,它将确保平稳旋转,无论您想要它的速度有多快或慢。

最新更新