[英]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.