Unity旋转问题的总结

1.物体的直接旋转

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

transform.rotation;这里可以通过直接定义一个quaternion变量然后赋值。

2.协同旋转

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

3.哪天想到再写

猜你喜欢

转载自www.cnblogs.com/xiaoahui/p/10995578.html