Die Spieler-Szene erstellen
Mit den korrekten Projekteinstellungen können wir mit der Arbeit am vom Spieler kontrollierten Charakter beginnen.
Die erste erstellte Szene definiert das Player-Objekt. Einer der Vorteile einer separaten Spieler-Szene ist, dass diese unabhängig vom Rest des Spiels getestet werden kann, bevor andere Teile des Spiels existieren müssen.
Node-Struktur
To begin, we need to choose a root node for the player object. As a general rule, a scene's root node should reflect the object's desired functionality - what the object is. In the upper-left corner, in the "Scene" tab, click the "Other Node" button and add an Area2D node to the scene.
When you add the Area2D node, Godot will display the following warning icon
next to it in the scene tree:
This warning tells us that the Area2D node requires a shape to detect collisions or overlaps.
We can ignore the warning temporarily because we will first set up the player's visuals
(using an animated sprite). Once the visuals are ready, we will add a collision shape as a child
node. This will allow us to accurately size and position the shape based on the sprite's appearance.
Mit Area2D können Objekte erkannt werden, die mit dem Spieler überlappen oder diesen berühren. Wir ändern den Namen des Nodes zu Player, indem wir darauf Doppelklicken. Nun da wir den Root-Node der Szene gesetzt haben, können wir weitere Nodes hinzufügen, um ihm damit mehr Funktionalität zu geben.
Bevor wir dem Player-Node untergeordnete Nodes hinzufügen, wollen wir sicherstellen, dass wir sie nicht versehentlich verschieben oder in der Größe verändern, indem wir auf sie klicken. Wählen Sie den Node aus und klicken Sie auf das Icon rechts neben dem Schloss. Im Tooltip steht: "Gruppiert den ausgewählten Node mit seinen Child-Nodes. Dies bewirkt, dass der Parent-Node ausgewählt wird, wenn ein Child-Node in der 2D- und 3D-Ansicht angeklickt wird."
Save the scene as player.tscn. Click Scene > Save, or press Ctrl + S
on Windows/Linux or Cmd + S on macOS.
Bemerkung
Für dieses Projekt halten wir uns an die Godot-Namenskonvention.
GDScript: Klassen (Nodes) nutzen PascalCase, Variablen und Funktionen snake_case und Konstanten ALL_CAPS (Siehe GDScript Style Guide).
C#: Klassen, Exportvariablen und Methoden PascalCase, private Felder _camelCase, lokale Variablen und Parameter verwenden camelCase (Siehe C#-Styleguide). Beachten Sie die genaue Schreibweise, wenn Sie Signale einbinden möchten.
Sprite-Animation
Click on the Player node and add (Ctrl + A on Windows/Linux or
Cmd + A on macOS) a child node AnimatedSprite2D. The AnimatedSprite2D will handle the
appearance and animations for our player. Notice that there is a warning symbol
next to the node. An AnimatedSprite2D requires a SpriteFrames resource, which is a list of the animations it can
display. Make sure AnimatedSprite2D is selected and then find the Sprite Frames property under
the Animation section in the Inspector and click "[empty]" -> "New SpriteFrames":
Click on the SpriteFrames you just created to open the "SpriteFrames" panel:
On the left is a list of animations. Click the default one and rename it to
walk. Then click the Add Animation button to create a second animation
named up.
Find the player images in the FileSystem dock - they're in the art folder
you unzipped earlier. Drag the two images for each animation, into the
Animation Frames side of the panel for the corresponding animation:
playerGrey_walk1andplayerGrey_walk2for thewalkanimationplayerGrey_up1andplayerGrey_up2for theupanimation
Die Bilder des Spielers sind ein wenig zu groß für das Spielfenster, also müssen wir sie herunterskalieren. Klicken Sie auf den AnimatedSprite2D-Node und setzen Sie die Eigenschaft Skalierung auf (0.5, 0.5). Sie finden diese Eigenschaft im Inspektor unter der Überschrift Node2D.
Schließlich fügen Sie ein CollisionShape2D als Child von Player hinzu. Dies wird die "Hitbox" des Spielers bestimmen, oder die Begrenzung seines Kollisionsbereichs. Für diesen Charakter ist ein CapsuleShape2D-Node am besten geeignet, also klicken Sie neben "Shape" im Inspektor auf "[leer]" -> "Neue CapsuleShape2D". Benutzen Sie die beiden Größenanfasser, um die Shape so zu verändern, dass sie das Sprite abdeckt:
Wenn Sie fertig sind sollte Ihre Player-Szene die folgende Struktur haben:
Once this is done, the warning on the Area2D node will disappear, as it now has
a shape assigned and can interact with other objects.
Speichern Sie die Szene nach diesen Änderungen wieder ab.
Im nächsten Schritt werden wir ein Skript für Bewegung und Animation zum Spieler-Node hinzufügen. Anschließend werden wir eine Kollisionserkennung einrichten, um zu erkennen, wenn der Player von etwas getroffen wird.