Я делаю трехмерную космическую игру, в которой ты управляешь кораблем. его первый человек из кабины. Все мои движения работают как шарм (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;