Не вращайте ось Z при вращении вокруг Vector3.up и Vector3.left - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть космический челнок, который я хочу rotate на Vector3.up и Vector3.left, чтобы игрок мог смотреть вверх / вниз и влево / вправо с помощью челнока.

Это код, который я использую:

// Rotate the ship
transform.Rotate(Vector3.up, distX * rotateSpeed * Time.deltaTime, Space.Self);
transform.Rotate(Vector3.left, distY * rotateSpeed * Time.deltaTime, Space.Self);

, где distX - это значение силы вращения, основанное на Mouse X - Ось и rotateSpeed - это простозначение для скорости вращения.

Однако, если я использую этот скрипт, чтобы вращать мой корабль, он вращается и по оси z.

И я понятия не имею, почему он это делает.Это единственные строки в моем коде (пока), которые что-то делают с вращением Шаттла.

Я пытался пока заменить Vector3.up на transform.up и Vector3.left на transform.right (также изменилось distY на -distY во втором случае), но тоже не сработало.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете присвоить значение Эйлера от 0 до z, например, что позволяет ограничить вращение по оси z:

    distX = Input.GetAxis("Vertical") * rotateSpeed * Time.deltaTime;
    distY = Input.GetAxis("Horizontal") * rotateSpeed * Time.deltaTime;       
    transform.rotation = Quaternion.Euler(distX, distY, 0f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...