每个unity物体在面板上都有一个rotation值,那么这个旋转的数值是怎么得出来的呢?
假如一个物体xyz的rotation值都不为零,我们拉动面板上的数值会有这样的发现,拉动y值时物体绕世界坐标的y轴也就是竖直方向做旋转,拉动z轴物体沿自身坐标的z轴旋转,拉动x轴则很难看出旋转轴。
如果将面板上的rotationZ值设为0,再拉动x,发现物体绕自身坐标的x轴旋转
动图来自(7条消息) unity 旋转欧拉角 万向锁 解释_fengya1的专栏-CSDN博客_unity 万向锁
对于这个现象,我们可以这样理解,unity得到一个旋转的物体,是从(0,0,0)开始,先绕y轴旋转,随后是x轴,最后是z轴。
什么是万向锁现象?是指欧拉角中的pitch值,即unity面板中的rotationX为90度,旋转会失去一个自由度。
设置rotationX为90度,再拉动y和z,会发现它们的旋转轴重合了,这样一来也就不能再自由旋转了。通过代码递增欧拉角x,也会发现到达90时便不能再增加。
通过用四元数代替欧拉角就可以防止这个问题的产生。