2014-01-17 23 views
3

我正在學習如何使用統一性,並且在改變旋轉的某些方面時對於最佳實踐有一個簡短的問題。如果我只想調整新旋轉的x和z方面,那麼最好的方法是做什麼。正確調整旋轉方面的方法

我想出了兩種:

newRotation.x = 0F; 
newRotation.z = 0F; 

或者:

newRotation = new Quaternion(0f, newRotation.y, 0f, newRotation.w); 

其中哪些會是更好的方式去完成歸零x和z的任務,但不影響剩餘一樣?還是有另一種我失蹤的方式?

感謝

+2

如果'newRotation'是一個局部變量,它可能並不重要;如果它是一個類字段,我會選擇哪個分配較少的堆(請參閱[這是關於結構分配的SO線程](http://stackoverflow.com/questions/203695/does-using-new-on-a-strict-分配它在堆或堆棧)以供參考)。順便說一句,你是否確信你知道那是什麼?如果您不確定四元數的內在價值是什麼,您幾乎可以肯定希望使用[euler angles](http://docs.unity3d.com/Documentation/ScriptReference/Quaternion-eulerAngles.html)。 – rutter

回答

0

通過改變X,Y或Z我假設你正在試圖改變你的旋轉軸。

請務必記住,這些值代表旋轉軸的座標乘以旋轉角的一半的正弦。 如果您在設置時不小心,可以設置不同的旋轉角度。

改變旋轉的安全方法是使用Quaternion(Vector3D,Double),您可以在其中設置旋轉軸和角度(度)。