В настоящее время я создаю 3D-шутер от первого лица в браузере с использованием WebGL. Как мне реализовать mouselook / free look для такой игры?
10
В настоящее время я создаю 3D-шутер от первого лица в браузере с использованием WebGL. Как мне реализовать mouselook / free look для такой игры?
Ответы:
Mouselook теперь поддерживается в Chrome и Firefox через спецификацию W3C Pointer Lock . По существу:
Хорошая учебная статья - « Блокировка указателя и элементы управления шутером от первого лица» на HTML5Rocks.
источник
Захват
mousemove
событий и использованиеscreenX
иscreenY
свойства объекта события для обновления положения камеры (используйте дельту до последнегоscreenX
иscreenY
положение, чтобы получить величину движения).Если у вас есть какой-то вид графа сцены , вы можете создать настройку узла следующим образом:
Движение по оси X вращает узел Yaw, а движение по оси Y вращает узел Pitch. CameraNode будет перемещаться при перемещении игрока.
источник
Это довольно просто и просто занимает две вещи.
Пример кода события
Вот пример исходного кода для обработки событий. Системный модуль (который обрабатывает все игровые <-> взаимодействия с браузером) отслеживает две переменные:
lastMousePosition
иlastMouseDelta
.Чтобы отслеживать камеру с помощью мыши, вам просто нужно
lastMouseDelta
знать, как вы узнаете, на сколько градусов повернуть кадр за кадром.Тот же код движения камеры
Вот пример кода для обработки вращения камеры. Учитывая количество пикселей, перемещенных мышью в направлении X или Y, поверните камеру на столько градусов.
Позже, когда вы начнете рендерить свой мир, просто сгенерируйте матрицу вида модели из вашей камеры. (Преобразование положения камеры, рыскания, тангажа и крена в векторы вы можете передать в gluLookAt.) И вам следует идти вперед.
источник