欧拉角和四元数
1.简介
Quaternion又称四元数,由x,y,z和w这四个分量组成,四元数的乘法不符合交换律。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。
2.Unity里面的Transform组件里的Rotation是四元数,但是他是以欧拉角(Vector3)的形式展现在我们面前,目的就是为了方便我们修改。因此,我们给Rotation直接赋值的时候,也只能用Quaternion赋值。意识到这点很重要
rotation.eulerAngles = new Vector3(0, 30, 0);
3.四元数q转欧拉角v
Vector3 v = q.eulerAngles;
4.欧拉角v转四元数q
Quaternion q = Quaternion.Euler(v);
5.获取某物体的旋转角度
transform.rotation:物体旋转角度的四元数(受父物体影响)
transform.localRotation:物体旋转角度的四元数(不受父物体影响)
transform.eulerAngles:物体旋转角度,(Inspector面板中Rotation显示的数,受父物体影响)
transform.localEulerAngles:物体旋转角度,(Inspector面板中Rotation显示的数,不受父物体影响)
6.赋值操作示列
PlayerEx.transform.position = new Vector3(1f, -1f, 1);
PlayerEx.transform.rotation = Quaternion.Euler(0 , - 30, 0);