Spielerszene und Eingabeaktionen
In den nächsten zwei Lektionen werden wir die Spielerszene entwerfen, benutzerdefinierte Eingabe-Aktionen registrieren und die Bewegung des Spielers programmieren. Am Schluss haben Sie einen spielbaren Charakter, der sich in acht Richtungen bewegen kann.
Create a new scene by going to the Scene menu in the top-left and clicking New Scene.
Click the Other Node button and select the CharacterBody3D node type
to create a CharacterBody3D as the root node.
Rename the CharacterBody3D to Player.
Character bodies are complementary to the area and rigid bodies used in the 2D
game tutorial. Like rigid bodies, they can move and collide with the
environment, but instead of being controlled by the physics engine, you dictate
their movement. You will see how we use the node's unique features when we code
the jump and squash mechanics.
Siehe auch
Um mehr über die verschiedenen Arten von Physik-Nodes zu erfahren, lesen Sie die Einführung in die Physik.
Zunächst werden wir ein grundlegendes Rig für das 3D-Modell unseres Charakters erstellen. Dies ermöglicht es uns, das Modell später per Code zu drehen, während es eine Animation abspielt.
Add a Node3D node as a child of Player.
Select the Player node in the Scene tree and click the "+" button to add a child node.
Rename it to Pivot.
Erweitern Sie dann im Dateisystem-Dock den Ordner art/ durch einen Doppelklick und ziehen Sie player.glb per Drag&Drop auf Pivot.
Dies sollte das Modell als ein Child von Pivot instanziieren. Sie können es in Character umbenennen.
Bemerkung
The .glb files contain 3D scene data based on the open source glTF 2.0
specification. They're a modern and powerful alternative to a proprietary format
like FBX, which Godot also supports. To produce these files, we designed the
model in Blender 3D and exported it to glTF.
As with all kinds of physics nodes, we need a collision shape for our character
to collide with the environment. Select the Player node again and add a child node
CollisionShape3D. In the Inspector, on the Shape property,
add a new SphereShape3D.
Das Drahtgitter der Kugel erscheint unter dem Charakter.
Dies wird die Shape, die von der Physik-Engine verwendet wird, um mit der Umgebung zu kollidieren, also wollen wir, dass sie besser zum 3D-Modell passt. Vergrößern Sie sie ein wenig, indem Sie den orangen Punkt im Viewport ziehen. Meine Kugel hat einen Radius von etwa 0.8 Metern.
Verschieben Sie die Kollisions-Shape dann nach oben, so dass ihre Unterseite ungefähr auf der Ebene des Gitters liegt.
To make moving the shape easier, you can toggle the model's visibility by clicking
the eye icon next to the Character or the Pivot nodes.
Save the scene as player.tscn.
Jetzt wo die Nodes bereit sind, können wir fast mit dem Programmieren anfangen. Aber zuerst sollten wir ein paar Eingabe-Aktionen definieren.
Eingabeaktionen erstellen
Um den Charakter zu bewegen, hören wir auf die Eingaben des Spielers, wie zum Beispiel das Drücken der Pfeiltasten. In Godot können wir zwar alle Tastenbelegungen in Code schreiben, es gibt allerdings ein mächtiges System das es Ihnen erlaubt, ein Label zu einer Liste von Tasten und Buttons hinzuzufügen. Dies vereinfacht unsere Skripte und macht sie lesbarer.
This system is the Input Map. To access its editor, head to the Project menu and select Project Settings....
At the top, there are multiple tabs. Click on Input Map. This window allows you to add new actions at the top; they are your labels. In the bottom part, you can bind keys to these actions.
Godot projects come with some predefined actions designed for user interface design (see above screenshot). These will become visible if you enable the Show Built-in Actions toggle. We could use these here, but instead we're defining our own to support gamepads. Leave Show Built-in Actions disabled.
Wir werden unsere Aktionen move_left, move_right, move_forward, move_back und jump nennen.
To add an action, write its name in the bar at the top and press Enter or click the Add button.
Erstellen Sie die folgenden fünf Aktionen:
To bind a key or button to an action, click the "+" button to its right. Do this
for move_left. Press the left arrow key and click OK.
Binden Sie auch die Taste A, an die Aktion move_left.
Let's now add support for a gamepad's left joystick. Click the "+" button again but this time, select the input within the input tree yourself. Select the negative X axis of the left joystick under Joypad Axes.
Leave the other values as default and press OK.
Bemerkung
Wenn Sie den Controllern unterschiedliche Eingabeaktionen zuweisen möchten, sollten Sie die Option Geräte in den Zusatzoptionen verwenden. Gerät 0 entspricht dem ersten angeschlossenen Gamepad, Gerät 1 entspricht dem zweiten angeschlossenen Gamepad usw.
Machen Sie das gleiche für die anderen Eingabeaktionen. Zum Beispiel binden Sie den rechten Pfeil, D, und die positive Achse des linken Joysticks an move_right. Nachdem Sie alle Tasten gebunden haben, sollte Ihre Benutzeroberfläche wie folgt aussehen.
The final action to set up is the jump action. Bind the Space key and the gamepad's
A button located under Joypad Buttons.
Ihre Sprung-Eingabeaktion sollte wie folgt aussehen.
Das sind alle Aktionen die wir für dieses Spiel brauchen. Sie können dieses Menü nutzen um beliebige Gruppen von Tasten und Buttons in ihren Projekten zu beschriften.
Im nächsten Teil werden wir die Bewegung des Spielers programmieren und testen.