你好,我一直在研究相机旋转方法。
我正在尝试使用鼠标输入来旋转相机。我需要水平旋转与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;
如果有人能帮助我解决这个问题,我将非常感激。谢谢。 抱歉用英语写的不好,请见谅。