我在这里做的是在按键上一次将相机旋转 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 方法(在变换和四元数上),而不是直接设置目标值。在大多数情况下,它将确保平稳旋转,无论您想要它的速度有多快或慢。