2014-11-24 67 views
0

我有一個正在圍繞X軸旋轉的變換。但是,將這個旋轉轉換爲另一個變換時,我希望它做同樣的旋轉。但圍繞Z軸。將變換旋轉從X更改爲Z軸

但是,這種旋轉不是「旋轉」,它只是一種從外部編輯旋轉的變換。所以我必須旋轉原始變換以匹配第二個變換,但是要考慮旋轉。

軸在下面的圖像:RED = X,GREEN = Y,BLUE = Z

旋轉原:

enter image description hereenter image description here

旋轉它應該有後:

enter image description hereenter image description here

什麼是這個框架的正確方法b y幀?

由於提前,

笑臉

回答

0

我可以給你解決了改變從一個軸旋轉到其他的一般問題的答案。

每個轉換對象都有一個transform.localRotation屬性,該屬性表示相對於父級方向的轉換方向。如果變換沒有父項,則此方向與世界空間有關。

Quaternion是用來表示旋轉的數據類型,它有一個有用的方法ToAngleAxis

float angle; 
Vector3 axis; 
transform.localRotation.ToAngleAxis(out angle, out axis); 

將設置變量angleaxis到的localRotation的角度和軸。 out部分意味着你正在傳遞一個由該函數設置的變量,而不是用作輸入。

在這種情況下,angle變量是您想要實際使用的部分。如果你使用Quaternion.AngleAxis,提供這個angle值和你想要的軸,你會得到一個新的旋轉,它會匹配你想要的參數。

例如:要改變transform1任何旋轉到transform2 Z軸旋轉,你可以使用

float angle; 
float axis; 
transform1.localRotation.ToAngleAxis(out angle, out axis); 
transform2.localRotation = Quaternion.AngleAxis(angle, Vector3.forward); 

希望這有助於