Как я могу заблокировать вращение оси Z моей камеры в Unity?

Вопрос: Я использую положение мыши для поворота камеры: void FixedUpdate() { transform.Rotate(-Input.GetAxis("Mouse Y") * rotationspeed * Time.deltaTime, Input.GetAxis("Mouse X") * rotationspeed * Time.deltaTime, 0); } Проблема в том, что после некоторого поворота камера начинает вращаться и по оси Z. Что я должен сделать, чтобы заблокировать вращение оси Z камеры? Лучший ответ: Transform.Rotate имеет необязательный параметр

Вопрос:

Я использую положение мыши для поворота камеры:

void FixedUpdate() { transform.Rotate(-Input.GetAxis(«Mouse Y») * rotationspeed * Time.deltaTime, Input.GetAxis(«Mouse X») * rotationspeed * Time.deltaTime, 0); }

Проблема в том, что после некоторого поворота камера начинает вращаться и по оси Z. Что я должен сделать, чтобы заблокировать вращение оси Z камеры?

Лучший ответ:

Transform.Rotate имеет необязательный параметр

Space relativeTo = Space.Self

поэтому по умолчанию он имеет значение Sapce.Self поэтому он вращается вокруг локальных осей объекта.

Так что происходит, когда вы смотрите вниз, меняя местную ось X, ваша локальная ось Y больше не направлена вверх, а скорее направлена немного вперед. Так что, если вы теперь вращаетесь вокруг этой локальной оси Y, ваш локальный горизонт больше не выровнен с мировым горизонтом.

Вместо этого то, что вы хотите сделать (вы можете увидеть это и в примере, приведенном выше по ссылке), вращается вокруг оси Y в мировом пространстве, но вращается вокруг оси X в локальном пространстве.

как это

[SerializeField] private float rotationspeed; private void FixedUpdate() { // rotate around global world Y transform.Rotate(Input.GetAxis(«Mouse X») * rotationspeed * Time.deltaTime, 0, 0, Space.World); // rotate around local X transform.Rotate(0, -Input.GetAxis(«Mouse Y») * rotationspeed * Time.deltaTime, 0); } Ответ №1

Если вы хотите повернуть объект по двум осям, третья ось будет вращаться по умолчанию, вы не можете заблокировать это, потому что это факт реального мира. Попробуйте это в реальном мире, 3D-объект вращается, любые две оси будут вращаться автоматически. Если вы вращаете одну ось, две другие будут зафиксированы. Благодарю.

Оцените статью
Добавить комментарий