2015-01-07 3 views
0

Я в настоящее время пытаюсь что-то сделать с Oculus Rift.Знайте вращение через Quaternion

Единственный элемент управления - камера Oculus.

Игрок всегда движется вперед, но я хочу, чтобы он вращался, двигался вверх и вниз. Чтобы подняться, игрок должен смотреть на 10 ° до 45 ° вверх, одинаково для всех направлений.

В настоящее время я использую Unity, и я получаю кватернион относительно вращения камеры.

Есть ли какой-нибудь скрипт? Как я могу сделать это сам или, по крайней мере, как я могу перевести кватернион на вращение?

Помощь была бы очень признательна.

ответ

0

Хорошие новости! Для ваших целей вам не нужно иметь дело непосредственно с кватернионами. Однако небольшая векторная математика может помочь.

transform.forward в любом скрипте даст вам направление вперед объекта, к которому прикреплен сценарий. Если он находится на камере, это будет направление, в котором игрок смотрит.

Используя только направление движения камеры и направление движения вперед, вы можете рассчитать необходимую информацию для вращения вашего игрока.

Vector3.Angle(transform.forward, cameraObject.transform.forward) даст вам угол между двумя направлениями вперед.

Vector3.Cross(transform.forward, cameraObject.transform.forward) даст вам ось вращения.

Вы можете проверить, если угол находится в пределах требуемого диапазона, и использовать

transform.Rotate(Vector3.Cross(transform.forward, cameraObject.transform.forward), rotationSpeed * Time.deltaTime) для выполнения поворота. Если вращение находится в противоположном направлении, чем вы хотите, вам может потребоваться переключить порядок двух параметров на Vector3.Cross.