在相机旋转超过360度时添加一个整数

时间:2016-02-18 23:19:24

标签: c# unity3d camera rotation unity5

我在这里做的是使用

在按键上一次将相机旋转90度
transform.eulerAngles = Vector3.Lerp (transform.eulerAngles, currentpos, Time.deltaTime * speed); 

if (transform.eulerAngles.y == 360){
        currentpos = transform.eulerAngles + new Vector3 (0, 0, 0);
    }
问题是,当相机达到360度时,它想要尝试将角度更改为450,因此卡在无限旋转的环路中。 我必须使用欧拉角,因为相机倾斜45度,欧拉角度全局旋转而不是局部旋转

我的问题是如何让它停止无限循环并从360度旋转到90度以及不反向旋转例如我试过

Vector3.Lerp

然而SheetName = {'daraie ha';'motalebat';'bedehi ha';'daraie ha'}; RowNumber = [1; 9; 10; 20]; AllBanks = table(SheetName,RowNumber); 然后以相反方向向后旋转0而不是经过360度达到0。

1 个答案:

答案 0 :(得分:1)

我建议使用Mathf.LerpAngle()

无论您设置的角度是360度以上(比如360 + x)还是仅设置角度x,它都会按照您的预期进行插值,而不会尝试向相反方向拍摄。

我希望有所帮助!

修改 正如@JoeBlow在上面的评论中提到的,我还建议使用任何一种Rotate方法(在变换和四元数上),而不是直接设置目标值。在大多数情况下,它会确保顺利旋转,无论你想要它快速或慢慢。