对于Unity中旋转问题的一点总结
坐标系:
Unity中坐标系是这样的:
采用左手坐标系,x(Red) 水平向右,y(Green)竖直向上,z(Blue)纵向深入,依次是R - G -B
欧拉角
首先说一下Quaternion 的用处,quaternion 是四元数 (x,y,z,w)四个元单独没有意义,只有四个一起用时才有意义。
本次不打算专门谈四元数,而是谈它的成员变量 eulerAngles.
通常我们可以用欧拉角来代表四元数的旋转度量,也即 rotation(x,y,z)
而我们的Transform 的旋转度量就是欧拉角 同样是(x,y,z)
一般而言,旋转只需要用到四元数的欧拉角,它的乘法使用和四元数的乘法使用有所不同。
四元数是向量,左乘 lhs * rhs 和右乘 rhs * lhs 得到的结果不同,这个比较麻烦,如果需要请深入研究。
但是我们通常使用的是 欧拉角 与 三维向量相乘,这个是与左乘、右乘、乘的顺序 无关的Transform变换方法。
左乘,右乘不说了,都是一种使用方法:
Quaternion rotation = Quaternion.Euler (y, x, 0);
Vector3 position = rotation * new Vector3 (0