◉ VR-kurser
▶ Spela webbversionen

10. VR-styrning och WebXR-kontroller

Målet

Förstå hur samma spel får ett andra inmatningssätt i Quest utan att du bygger en ny bana eller en separat spelstatus. Du kan läsa koden utan headset; själva VR-testet görs sist. Se boot(), bindController() och updateMovement() i main.js.

En scen, två sätt att se den

På desktop visar camera en vanlig bild. I VR tar WebXR över kamerans faktiska huvudposition och riktning. renderer.xr.enabled = true tillåter detta, och VRButton lägger till knappen Enter VR. Spelet behåller samma scene, rig, monster och nycklar.

renderer.xr.getController(0) och (1) ger kontrollobjekt. När en kontroll ansluts får koden en inputSource med handedness: left eller right. Den högra handen får pistolen, den vänstra får handleds-HUD. Lita inte enbart på index 0/1 som vänster/höger; använd handedness när den finns.

Knappar och spakar

En spak rapporterar analoga tal, oftast mellan -1 och 1. Koden använder en dödzon för små ofrivilliga rörelser. En latch för svängning gör att ett spakutslag ger ett steg på 30 grader; användaren måste släppa tillbaka spaken innan nästa steg.

Komfort och säkerhet

Stegvis svängning är ofta behagligare än snabb kontinuerlig rotation. Håll gånghastigheten måttlig och testa stående i en säker fri yta. I banan finns yttre väggar och ett golv som fortsätter förbi utgången, men spelarens fysiska säkerhet beror fortfarande på Quest-gränsen i rummet.

Övning utan headset

Läs updateMovement() och markera den gren som körs när renderer.xr.isPresenting är sann. Skriv sedan en tvåkolumnstabell i egna anteckningar: "spelhandling" och "desktop/Quest-knapp". Jämför med startmenyns instruktioner. Om tabellen inte stämmer med koden är dokumentationen fel – det är koden som avgör.

Övning med headset

Följ kapitel 20 för säker anslutning. Kontrollera först att Enter VR finns, sedan att vänster spak flyttar, därefter höger spak och till sist interaktioner. Felsök en kontroll i taget. Om headsetet inte syns: börja med adb devices, adb reverse --list och sidan i Quest Browser – ändra inte spelkoden på måfå.

Klart när: du kan beskriva skillnaden mellan inputSource.handedness, en knappevent och en analog spakaxel.