繁体   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