Как работает вращение по оси Y в Unity?

Только недавно начал изучать движок Unity по книге Хокинга и сразу столкнулся с рядом проблем. В первую очередь, непонятен процесс вращения игрока по оси Y, и почему здесь задействована ось Х с изменёнными параметрами. А так же, что именно делает метод localEulerAngles класса transform. Ниже приведён код:

else if (axes == RotationAxes.MouseY) {
_rotationX -= Input.GetAxis(“Mouse Y”) * sensitivityVert;

_rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);

float rotationY = transform.localEulerAngles.y;

transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);


Если есть такая возможность, не могли бы вы объяснить, по какой именно логике работает данный код, потому что я никаким образом не могу понять.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 2
@SLiverRU
Unity, C#, не сделал ни одной игры... Пока что.
Логику кода у меня врятли получится объяснить, потому что я тоже сейчас учусь

Если у вас 2D игра, то вместо вращения объекта по оси Y, вы увидите изменение его размера, потому что это 2D объект и он плоский, а если у вас 3D игра, то вы будете видеть как вращается 3D объект. А вообще, вращение по оси Y - это просто вращение вокруг этой оси...

Опять же, если игра 2D, то при вращении по оси Y, объект визуально будет менять размер, а по оси X, он (объект) будет вращаться, а если игра в 3D, то автор книги будет вращать объект так, как нужно это ему, то есть ответить на вопрос "почему именно по этой оси" врятли кто-то сможет, ведь мы не знаем цель этого всего.

localEulerAngles это вращение по локальной оси, то есть в проекте есть глобальная ось координат (обычные и привычные X, Y, Z), но при этом у каждого объекта есть своя ось - локальная ось, советую поискать информацию в интернете про эти оси, а EulerAngles значит что мы будем вращать объект через углы Эйлера - самые привычные нам углы вращения (в случае с геометрией - не только вращения), такие многие изучали на геометрии, а есть Quartenion - это углы квартенионы, они немного сложнее, помимо осей X, Y и Z, там добавляется какое-то неизвестное мне значение w, такое я не изучал, потому что углы Эйлера для меня легче и привычнее.

Если я не правильно ответил или даже не смог ответить на ваши вопросы, то простите меня... ._.
Ответ написан
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Как уже ответил Nikita Mamchenko есть мировая (world) система координат, где "вверх" это Y, а есть локальная (local), где "вверх" это где у объекта верх. Если объект повернут скажем набок, его верх будет смотреть влево, оси поменяются местами.
Ну и всё остальное там в ответе верно, читайте внимательно.

Как работает приведенный код:
Если ось вращения это вертикальная ось мыши, то берем движение мыши, преобразовываем величину и ограничиваем, чтобы не выходила за указанные пределы. После эту величину движения указываем как угол для объекта по оси Х, угол оси Y при этом не трогаем а Z всегда ноль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы