2013-10-24 134 views
2

IHi我一直在研究相機旋轉方法。Unity C#四元數旋轉校正方向

我正在嘗試使用鼠標輸入旋轉攝像頭。 我需要水平旋轉平行於x,y平面(我的板),垂直旋轉被限制在某個角度(如40度到-40度)。

我使用四元數來旋轉相機。

這裏到目前爲止我的代碼

float angle = (mouseX_Current - mouseX_ActionStart) * 0.25f; 
Quaternion horizontalRotationQuat = Quaternion.AngleAxis(angle, Vector3.up); 

angle = (mouseY_Current - mouseY_ActionStart) * 0.25f; 
Quaternion verticalRotationQuat = Quaternion.AngleAxis(angle, Vector3.right); 

Camera.main.transform.rotation *= (horizontalRotationQuat * verticalRotationQuat); 

我的問題是,通過將這些小鼠與旋轉以我目前的相機定向四元的相機是沒有平行更多的它正尋覓的平面(X,Y)在。

我一直試圖創建一個修正四元數添加到相機四元數後添加這些鼠標相關的旋轉,但我似乎無法找到正確的。

Quaternion currentOrientationQuat = Camera.main.transform.rotation; 

Quaternion corretionQuat = new Quaternion(0.0f, 0.0f, - currentOrientationQuat.z, currentOrientationQuat.w); 

Camera.main.transform.rotation *= corretionQuat; 

如果有人可以幫我解決這個問題,我將非常感激。 謝謝。

對不起,我的英語,不是我的主要語言。

回答

1

使用另一種方法

float angle = (mouseX_Current - mouseX_ActionStart) * 0.25f; 
Camera.main.transform.Rotate(0.0f, 0.0f, angle, Space.World); 

angle = (mouseY_Current - mouseY_ActionStart) * 0.25f; 
Camera.main.transform.Rotate(angle, 0.0f, 0.0f, Space.Self); 

感覺啞看到它是多麼容易做到這一點後,解決了這個。 Did'nt甚至不需要這個四元數。