Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Grundlegende XR-Fortbewegung

Für die grundlegende Fortbewegung werden wir weiterhin unsere Godot XR Tools-Bibliothek verwenden. Die Bibliothek enthält sowohl grundlegende Bewegungsfunktionen als auch fortgeschrittenere Funktionen.

Hinzufügen unseres Spieler-Bodys

Der erste Schritt, den wir tun müssen, ist, einen Helfer-Node zu unserem XROrigin3D-Node hinzuzufügen. Da XR raumbezogenes Tracking unterstützt, können Sie nicht einfach Ihr XR-Setup zu einem CharacterBody3D-Node hinzufügen und erwarten, dass die Dinge funktionieren. Sie werden Probleme bekommen, wenn der Benutzer sich in seinem physischen Raum bewegt und nicht mehr in der Mitte des Raumes steht. Godot XR Tools bettet die benötigte Logik in einen Hilfs-Node namens PlayerBody ein.

Wählen Sie Ihren XROrigin3D-Node und klicken Sie auf den Child-Szene instanziieren-Button um eine Child-Szene hinzuzufügen. Wählen Sie addons/godot-xr-tools/player/player_body.tscn und fügen Sie diesen Node hinzu.

Hinzufügen eines Bodens

Dieser Node regelt die Bewegung des Charakters im Spiel und reagiert sofort auf die Schwerkraft. Um also zu verhindern, dass unser Spieler in die Unendlichkeit herunterfällt, fügen wir unserer Szene schnell einen Boden hinzu.

Wir beginnen mit dem Hinzufügen eines StaticBody3D-Nodes zu unserem Root-Node und benennen diesen in Floor um. Wir fügen einen MeshInstance3D-Node als Child-Node für unseren Floor hinzu. Dann erstellen wir ein neues PlaneMesh als dessen Mesh. Für den Moment setzen wir die Größe des Meshes auf 100 x 100 Meter. Als nächstes fügen wir einen CollisionShape3D-Node als Child-Node für unseren Floor hinzu. Dann erstellen wir einen BoxShape als unsere Shape. Wir setzen die Größe dieser Box-Shape auf 100 x 1 x 100 Meter. Außerdem müssen wir unsere Collision Shape um 0,5 Meter nach unten verschieben, damit die Oberseite unserer Box mit dem Boden bündig ist.

Damit wir besser sehen können, dass wir uns tatsächlich in unserer Welt bewegen, reicht ein weißer Boden nicht aus. Dazu fügen wir unserem PlaneMesh ein Material hinzu und setzen die Albedo auf eine Gittertextur, die wir mit Wahooneys hervorragendem kostenlosen Texturgenerator erstellt haben.

../../_images/godot_xr_tools_floor.webp

Direkte Bewegung

Wir werden damit beginnen, einige grundlegende direkte Bewegungen in unser Setup einzubauen. So kann sich der Benutzer mit dem Joystick durch die virtuelle Welt bewegen.

Bemerkung

Es ist wichtig zu beachten, dass die Bewegung durch die virtuelle Welt, während der Spieler in der realen Welt still steht, Übelkeit auslösen kann, besonders für Spieler, die neu mit VR umgehen. Die Default-Einstellungen für unsere Bewegungsfunktionen sind ziemlich konservativ. Wir raten Ihnen, sich an diese Default-Einstellungen zu halten, bieten aber Funktionen im Spiel an, um weniger behagliche Einstellungen für erfahrenere Benutzer zu ermöglichen, die es gewohnt sind, VR-Spiele zu spielen.

Wir möchten dies für den rechten Controller aktivieren. Dazu fügen wir dem rechten XRController3D-Node eine Subszene hinzu. Wählen Sie addons/godot-xr-tools/functions/movement_direct.tscn als die hinzuzufügende Szene.

Mit dieser Funktion kann sich der Spieler mit dem Joystick des rechten Controllers vorwärts und rückwärts bewegen. Es gibt eine Option, um auch Links/Rechts-Strafing hinzuzufügen, aber standardmäßig ist dies deaktiviert.

Stattdessen fügen wir die Fähigkeit hinzu, dass sich der Spieler mit dem Joystick auch drehen kann. Wir fügen eine weitere Unterszene zu unserem Controller-Node hinzu und wählen dafür addons/godot-xr-tools/functions/movement_turn.tscn.

Das Drehen-System verwendet standardmäßig einen Snap-Turn-Ansatz. Das bedeutet, dass das Drehen in Schritten erfolgt. Dies mag unangenehm erscheinen, ist aber eine bewährte Methode zur Bekämpfung der Bewegungsübelkeit. Sie können ganz einfach zu einem Modus wechseln, der ein sanftes Drehen ermöglicht, indem Sie die Property mode auf dem Turn-Node ändern.

Wenn Sie Ihr Spiel zu diesem Zeitpunkt starten, werden Sie feststellen, dass Sie sich mit dem rechten Joystick frei durch die Welt bewegen können.

Teleportieren

Eine Alternative zur direkten Bewegung, die manche Benutzer als angenehmer empfinden, ist die Möglichkeit, sich an einen anderen Ort innerhalb der Spielwelt zu teleportieren. Die Godot XR Tools unterstützen dies durch die Teleport-Funktion und wir werden diese Funktion zu unserem Linke-Hand-Controller hinzufügen.

Fügen Sie eine neue Child-Szene zu Ihrem linken XRController3D-Node hinzu, indem Sie die Szene addons/godot-xr-tools/functions/function_teleport.tscn auswählen.

Nach dem Hinzufügen dieser Szene kann sich der Spieler durch die Welt teleportieren, indem er den Trigger des linken Controllers drückt, auf den gewünschten Ort zeigt und dann den Trigger loslässt. Der Spieler kann auch die Ausrichtung mit dem Joystick des linken Controllers einstellen.

Wenn Sie alle Anweisungen korrekt befolgt haben, sollte Ihre Szene jetzt etwa so aussehen:

../../_images/godot_xr_tools_basic_movement.webp

Fortgeschrittenere Bewegungsfunktionen

Godot XR Tools fügt viele weitere Bewegungsfunktionen hinzu, z.B. Gleiten, einen Greifhaken, ein Jetpack, Klettermechanik usw.

Die meisten funktionieren ähnlich wie die grundlegenden Bewegungsfunktionen, die wir bisher behandelt haben: Fügen Sie einfach die entsprechende Subszene aus dem Plugin zu dem Controller hinzu, der sie implementiert.

Wir werden einige davon später in diesem Tutorial genauer betrachten, wenn zusätzliche Einstellungen erforderlich sind (z.B. Klettern), aber für andere sehen Sie bitte auf den Hilfeseiten von Godot XR-Tools nach.