1. Installera Godot XR Tools
Förutsättning: Du har slutfört kapitel 3 och sett grundscenen i headsetet. Öppna Godots AssetLib / Asset Store, sök efter Godot XR Tools och välj Godot 4-utgåvan från GodotVR-projektet. Installera i projektet och vänta tills importen är färdig.
Öppna Project → Project Settings → Plugins och aktivera Godot XR Tools. Notera versionen du installerar. Läs tilläggets versionskrav innan uppgradering och spara en fungerande kopia av projektet. Importfel ska lösas innan du exporterar vidare. Installation · Utgåvor och versionskrav
OpenXR aktiverades i kapitel 2 och provades på Quest i kapitel 3. XR Tools ersätter inte den inställningen. Behåll vårt main.gd; lägg inte samtidigt till tilläggets alternativa start_xr.tscn.
2. Lägg till vänster och höger kontroll
Öppna scenes/xr_player.tscn. Lägg till två XRController3D direkt under XRPlayer.
| Nodnamn | Tracker | Pose |
|---|---|---|
| controller_left | left_hand | grip |
| controller_right | right_hand | grip |
Välj värdena i Inspector. Om tracker visas som en sökväg väljer du motsvarande vänster eller höger hand i listan. Namnet på noden räcker inte: det är Tracker som avgör vilken fysisk kontroll noden följer.
Håll kontrollernas skala vid (1, 1, 1). Spårningen sätter deras position när spelet körs. Godots XR-noder
3. Visa händer
- Markera
controller_leftoch välj Instantiate Child Scene (kedjeikonen i scenpanelen). - I Select Scene: aktivera Addons längst nere till höger om pluginets scener inte visas.
- Sök efter Left Hand Low eller
left_hand_lowoch lägg till handscenen. - Upprepa på
controller_rightmed Right Hand Low. - Spara och exportera igen. Vicka på båda kontrollerna och kontrollera att rätt hand följer med.
Om scenlistans namn skiljer sig, bläddra i addons/godot-xr-tools i FileSystem och använd motsvarande handscen i din installerade version. De här händerna är modeller som följer kontrollerna. Det är inte samma funktion som kamerabaserad handspårning utan kontroller. XR Tools: Hand Models
4. Kontrollera OpenXR action map
En action är en namngiven inmatning, exempelvis ett grepp eller en styrspak. En binding kopplar den till en fysisk knapp för en viss kontrolltyp. Spårningen kan fungera även om knappbindningarna är fel.
Öppna projektets OpenXR action map, normalt openxr_action_map.tres, genom FileSystem. Du kan hitta resursen via Project Settings → XR → OpenXR → Default Action Map. Kontrollera att en interaction profile för Quest-kontrollerna finns, exempelvis Oculus Touch eller en relevant Meta Touch-profil som stöds av din version.
Behåll de standardactions som XR Tools förväntar sig. Kontrollera i varje tillagd funktions Inspector vilket Action-namn den läser. Det måste motsvara namnet i action map och ha en binding i kontrollprofilen. Skapa inte ett nytt godtyckligt namn för samma knapp. Godots vanliga Input Map är inte ersättningen för OpenXR action map. Actions och bindings
5. Lägg till förflyttning
Markera controller_left, välj Instantiate Child Scene och sök efter Movement Direct. Lägg till den rörelsefunktion som använder styrspaken. Markera därefter controller_right och lägg till Movement Turn.
Funktionerna ska vara barn till den kontroll vars styrspak de läser. I Inspector för svängfunktionen väljer du stegvis rotation, snap turn, till exempel 30°. Börja med låg förflyttningshastighet. Prova först en liten rörelse, sedan en sväng.
I aktuella XR Tools skapas PlayerBody automatiskt när en rörelsefunktion behöver den. Kontrollera därför scenen innan du lägger till en till. Om din installerade version kräver att kroppen läggs till manuellt använder du pluginets färdiga Player Body-scen under XROrigin3D. Lägg inte på en extra egen kapsel om pluginet redan hanterar kroppen. Direct Movement · Turn · Player Body
Kontroll: Spelaren ska stå kvar på golvet och kunna röra sig längs det. Om du faller igenom: kontrollera golvets collision och att PlayerBodys mask inkluderar golvets lager. Ändra inte kamerans höjd för att dölja ett kollisionsfel.
6. Lägg till hopp och hukning
I det här projektet följer vi Metas vanliga kontrollkarta för artificiell förflyttning:
| Kontroll | Funktion |
|---|---|
| Vänster styrspak | Gå |
| Höger styrspak åt sidan | Sväng |
| A på höger kontroll | Hoppa |
| Klick på höger styrspak | Växla mellan stående och hukad |
Det är alltså ett klick på styrspaken, som om den vore en knapp. Att dra höger styrspak nedåt gör inte spelaren hukad; styrspakens riktning är fortfarande reserverad för svängning. B används ofta för tillbaka eller avbryt i menyer och används därför inte som hoppknapp här. Se Metas rekommenderade locomotion-bindningar.
- Markera
controller_rightoch instansiera XR Tools-scenen Movement Jump. - Markera
MovementJumpoch sätt Jump Button Action tillax_button. Eftersom noden ligger under höger kontroll betyder det höger A. - Markera
controller_rightigen och instansiera Movement Crouch. - Sätt Crouch Button Action till
primary_click, Crouch Type tillToggleoch Crouch Height till1.0meter.
Toggle innebär att ett klick hukar spelaren och nästa klick reser spelaren. Funktionen använder samma PlayerBody som den övriga rörelsen, så lägg inte till en separat kropp eller egen hoppfysik.
Kontrollera i openxr_action_map.tres att ax_button är bunden till A på höger kontroll och att primary_click är bunden till höger styrspaksklick. Samma actionnamn kan också ha en binding för vänster kontroll; det är nodens placering under controller_right som väljer höger hand.
7. Ge båda händerna en greppfunktion
Instansiera addons/godot-xr-tools/functions/function_pickup.tscn under controller_left. Lägg en andra instans under controller_right. I scenvalet kan du söka efter Function Pickup.
Pickup-funktionen söker efter särskilda pickable-objekt. En vanlig BoxMesh blir inte automatiskt greppbar. I nästa kapitel bygger du rätt typ av objekt. Pickup Function
XRPlayer (XROrigin3D)
├── XRCamera3D
├── controller_left (XRController3D)
│ ├── LeftHandLow
│ ├── MovementDirect
│ └── FunctionPickup
└── controller_right (XRController3D)
├── RightHandLow
├── MovementTurn
├── MovementJump
├── MovementCrouch
└── FunctionPickup
Trädet visar dina egna tillägg. PlayerBody kan skapas automatiskt av rörelsekomponenten. De exakta visningsnamnen kan variera mellan XR Tools-versioner.
8. Testa en funktion i taget
Spelaren fungerar när …
Om händerna följer med men knapparna inte reagerar: börja med action map. Om något script inte kan tolkas: följ pluginfelsökningen.