我有一個正在圍繞X軸旋轉的變換。但是,將這個旋轉轉換爲另一個變換時,我希望它做同樣的旋轉。但圍繞Z軸。將變換旋轉從X更改爲Z軸
但是,這種旋轉不是「旋轉」,它只是一種從外部編輯旋轉的變換。所以我必須旋轉原始變換以匹配第二個變換,但是要考慮旋轉。
軸在下面的圖像:RED = X,GREEN = Y,BLUE = Z
旋轉原:
旋轉它應該有後:
什麼是這個框架的正確方法b y幀?
由於提前,
笑臉
我有一個正在圍繞X軸旋轉的變換。但是,將這個旋轉轉換爲另一個變換時,我希望它做同樣的旋轉。但圍繞Z軸。將變換旋轉從X更改爲Z軸
但是,這種旋轉不是「旋轉」,它只是一種從外部編輯旋轉的變換。所以我必須旋轉原始變換以匹配第二個變換,但是要考慮旋轉。
軸在下面的圖像:RED = X,GREEN = Y,BLUE = Z
旋轉原:
旋轉它應該有後:
什麼是這個框架的正確方法b y幀?
由於提前,
笑臉
我可以給你解決了改變從一個軸旋轉到其他的一般問題的答案。
每個轉換對象都有一個transform.localRotation
屬性,該屬性表示相對於父級方向的轉換方向。如果變換沒有父項,則此方向與世界空間有關。
Quaternion
是用來表示旋轉的數據類型,它有一個有用的方法ToAngleAxis。
float angle;
Vector3 axis;
transform.localRotation.ToAngleAxis(out angle, out axis);
將設置變量angle
和axis
到的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);
希望這有助於