最開始遇到該問題的狀況比較複雜,另寫了一個例子。情形以下: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)的角度的。若是想保證一個物體的某一方向轉動和其餘的分開,(好比人轉身不受身體歪成啥樣影響)也是一種可行的方法。