簡體   English   中英

Unity C#四元數旋轉校正方向

[英]Unity C# Quaternion Rotation Correcting orientation

IHi我一直在研究相機旋轉方法。

我正在嘗試使用鼠標輸入旋轉相機。 我需要水平旋轉平行於ax,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;

如果有人可以幫助我,我將非常感激。 謝謝。

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

用另一種方法解決了這個問題

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);

看到這樣做有多容易,感到愚蠢。 甚至不需要這個四元數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM