在Unity中经常会用到物体的旋转,常用的方式一般是使用欧拉角和四元数。
欧拉角:
this.transform.eulerAngles
Demo:
private void OnGUI()
{
if (GUILayout.Button("x 轴旋转"))
{
this.transform.eulerAngles += new Vector3(1, 0, 0);
}
if (GUILayout.Button("y 轴旋转"))
{
this.transform.eulerAngles += new Vector3(0, 1, 0);
}
if (GUILayout.Button("z 轴旋转"))
{
this.transform.eulerAngles += new Vector3(0, 0, 1);
}
}
让物体分别绕x,y,z轴旋转 1 rad。
这里有个问题,当物体绕x轴旋转90度之后,再让y或z轴继续旋转,会发现,物体只能绕
y轴旋转。出现这种现象的原因是死锁了。欧拉角自身无法解决,需要利用四元数解决。
四元数:
this.transform.rotation