【发布时间】:2020-03-02 08:42:12
【问题描述】:
我正在制作一个 3D 太空游戏,你可以在其中驾驶一艘船。它的第一个人来自驾驶舱。 我所有的动作都像一个魅力(W/S = 加速/减速,Q/R = 向左/向右旋转),鼠标移动船。
但如果我使用旋转按钮,鼠标会一直“卡住”。最简单的解释方法是:当我正常飞行时,向上移动鼠标会使相机向上平移,向下平移 - 向下平移。 但是,如果我倒飞,鼠标似乎没有注意到它并以错误的方式平移(倒置)。就像它不知道我的轮换。另一方面,它更奇怪。鼠标在初始旋转时一直在上升,而不是在新的旋转上,我不知道如何解决它。
我基本上想做的也是按Q或E时转动鼠标方向
这是我的旋转/鼠标脚本:
if (Input.GetKey("q"))
{
orientationPanel.transform.Rotate(-Vector3.left * 100f * Time.deltaTime);
cam.transform.Rotate(Vector3.forward * 100f * Time.deltaTime);
transform.Rotate(Vector3.forward * 100f * Time.deltaTime);
}
if (Input.GetKey("e"))
{
orientationPanel.transform.Rotate(Vector3.left * 100f * Time.deltaTime);
cam.transform.Rotate(-Vector3.forward * 100f * Time.deltaTime);
transform.Rotate(Vector3.forward * 100f * Time.deltaTime);
}
if (Input.GetMouseButtonDown(0) && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
Fire();
}
float mouseX = Input.GetAxis("Mouse X");
float mouseY = -Input.GetAxis("Mouse Y");
rotY += mouseX * mouseSensitivity * Time.deltaTime;
rotX += mouseY * mouseSensitivity * Time.deltaTime;
rotX = Mathf.Clamp(rotX, -clampAngle, clampAngle);
rotZ = orientationPanel.transform.rotation.z;
Quaternion localRotation = Quaternion.Euler(rotX, rotY, rotZ);
transform.rotation = localRotation;
【问题讨论】: