Unity旋转问题的总结

1.物体的直接旋转函数

transform.Rotate();这个函数是在当前状态下网某个方向旋转。而且这里能够设置为世界空间或者自身空间。orm

transform.rotation;这里能够经过直接定义一个quaternion变量而后赋值。io

2.协同旋转form

首先定义父亲物体以z轴为轴心旋转,子物体以自身空间的x轴旋转,而且二者的旋转角度数要一致,或者有某种函数关系。此时若是用rotate会由于要使用deltaTime致使至关麻烦,因此这里用欧拉角构建quaterni变量赋值rotation。可是若是用quaternion会发现父亲物体和子物体的旋转会发生错误,由于子物体除了自身旋转还要应用父亲物体的旋转,因此为子物体构建由rotation01以后,用父亲物体的rotation02取乘以rotation01,即rotation=rotation02*rotation01,结果rotation才是子物体正确的rotation。注意这里的乘以顺序不能颠倒,不一样的去看一百遍线性代数。变量

3.旋转的角度值问题transform

获取的欧拉角的值实在0到360度之间。vector3得到的两个向量的有符号角度是-180到180。inspector显示的角度值若是代码或者场景控制物体旋转,显示的时0到180,可是手动控制能够是任何值。nio

相关文章
相关标签/搜索