Obecnie tworzę 3D strzelankę FPS w przeglądarce za pomocą WebGL. Jak mógłbym wdrożyć taką grę dla mouselook / free look ?
10
Obecnie tworzę 3D strzelankę FPS w przeglądarce za pomocą WebGL. Jak mógłbym wdrożyć taką grę dla mouselook / free look ?
Odpowiedzi:
Mouselook jest teraz obsługiwany w Chrome i Firefox przez specyfikację blokady wskaźnika W3C . Głównie:
Dobry artykuł na samouczek to Blokada wskaźnika i Sterowanie FPS w HTML5Rocks.
źródło
Przechwytuj
mousemove
zdarzenia i użyj właściwościscreenX
iscreenY
obiektu zdarzenia, aby zaktualizować pozycję kamery (użyj delty do ostatniejscreenX
iscreenY
pozycji, aby uzyskać ilość ruchu).Jeśli masz scenariusz , możesz zbudować konfigurację węzła w następujący sposób:
Ruch w osi X obraca węzeł YawNode, a ruch w osi Y obraca węzeł PitchNode. CameraNode zostanie przesunięty, gdy gracz się poruszy.
źródło
To dość proste i wymaga tylko dwóch rzeczy.
Przykładowy kod zdarzenia
Oto przykładowy kod źródłowy do obsługi obsługi zdarzeń. Moduł systemu (który obsługuje wszystkie interakcje przeglądarki <--> w grze) śledzi dwie zmienne:
lastMousePosition
ilastMouseDelta
.Aby śledzić kamerę za pomocą myszy, wystarczy,
lastMouseDelta
że będziesz wiedzieć, ile stopni obrócić klatka po klatce.Ten sam kod ruchu kamery
Oto przykładowy kod do obsługi obrotu kamery. Biorąc pod uwagę liczbę pikseli, które myszka przesunęła w kierunku X lub Y, obróć kamerę o tyle stopni.
Później, kiedy faktycznie zaczniesz renderować swój świat, po prostu wygeneruj matrycę widoku modelu z kamery. (Przekształcając pozycję kamery, odchylenie, pochylenie i rolowanie w wektory, które możesz przekazać do gluLookAt.) I powinieneś być dobry.
źródło