最开始遇到该问题的状况比较复杂,另写了一个例子。情形以下:c#
一个立方体上挂载脚本:code
transform.Rotate(25, 45, 30);
效果十分正常:orm
改一下代码:blog
transform.Rotate(-25, 0, 0); transform.Rotate(0, -45, 0); transform.Rotate(0, 0, -30);
结果变成了:it
transform.Rotate(x, y, z)方法不是在物体的三个旋转角度上分别加x, y, z,而是根据咱们给出的三个角度,寻找一个合适的轴,旋转相应的角度。因此当分三次进行旋转时,第三次旋转会影响前两次已经转出来的角度。(大概就是转一根歪着的笔就不是沿着中轴转了)form
别分开旋转,除非角度是多少无所谓。若是想在物体的三个旋转角度上加减指定数值,能够使用class
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x + dx, transform.localEulerAngles.y + dy, transform.localEulerAngles + dz);
transform
transform.localEulerAngles也不能够单独设置某一个值,必须整个Vector3传入。方法
或者实在是想分开旋转,能够使用im
transform.Rotate(-25, 0, 0, Space.World); transform.Rotate(0, -45, 0, Space.World); transform.Rotate(0, 0, -30, Space.Self);
我试了试,是能够转出来(-25, -45, -30)的角度的。若是想保证一个物体的某一方向转动和其余的分开,(好比人转身不受身体歪成啥样影响)也是一种可行的方法。