Dies ist ein maschinell übersetzter Text, der Fehler enthalten kann!
Woher stammen diese Informationen?
Vieles davon ist lediglich eine Wiederholung der offiziellen Godot-Dokumentation. Im Folgenden finden Sie einige nützliche Links zur offiziellen Dokumentation (die ich vorzuziehen würde, anstelle dieser auf Piggy, aber wenn Sie diese bevorzugen, nutzen Sie sie gerne!)
Nützliche Ressourcen:
Was ist mit Grafik, muss ich die selbst erstellen?
Nein! Ihr könnt hier viele kostenlose Assets finden:
Weitere nützliche Links:
Andere Game Engines?
Wenn du es vorziehst, kannst du andere Game Engines verwenden. Beispiele für andere Game Engines sind:
Es gibt viele andere auch, suche gerne, wenn du etwas anderes ausprobieren möchtest!
Was ist Godot?
Godot (ausgesprochen Guh-doh), ist eine ‘Game Engine’. Einfach ausgedrückt ist es ein Programm, mit dem Sie Spiele (oder herkömmliche Programme, wenn Sie möchten) erstellen können. Godot kann fast alles, was andere Game Engines können, sowohl 2D als auch 3D.
Beispiele für Spiele, die mit Godot erstellt wurden: Godot Showcase
Es sind nicht nur Indie-Spiele, die mit Godot erstellt wurden, Sonic Colors Ultimate wurde mit Godot erstellt!
Wie bekommst du Godot?
Du kannst Godot entweder herunterladen von:
- Der offiziellen Seite: Godot Official Page.
- Oder auf Steam: Godot Steam.
Einfach herunterladen und installieren (oder über Steam ausführen).
Richte ein Projekt ein!
Wenn du Godot startest, erscheint dir dieses Fenster:
Hier wirst du nach der Programmiersprache gefragt, GDScript oder C#. GDScript ist Python sehr ähnlich.
Unterschiede zwischen GDScript und Python (ohne Farben):
def hello():
text = "Hello world!"
print(text)
func hello():
var text = "Hello world!"
print(text)
Für Variablen in Python musst du nur den Namen der Variablen schreiben. In GDScript musst du zuerst var
schreiben. Um Funktionen zu erstellen, schreibst du func
anstelle von def
.
Szenen & Knoten
Ein der wichtigsten Konzepte in Godot sind Szenen und Knoten. Wir können mit Knoten beginnen. Ein Knoten ist ein Objekt in Godot, und es kann alles darstellen. Es kann etwas darstellen, das einen Spieler, einen Feind, eine Schaltfläche in einem Menü, Text auf dem Bildschirm, alles Mögliche darstellt. Szenen sind eine Sammlung von Knoten.
Hier sollen wir ein sehr einfaches Beispiel erstellen.
Teil 1a - Richte die “Player”-Szene ein
Oben im Godot-Fenster, klicke auf die “2D”-Schaltfläche, um die Ansicht in eine 2D-Ansicht zu ändern.
Auf der linken Seite des Fensters sehen Sie die folgende Benutzeroberfläche:
Klicke auf die “Other Node”-Schaltfläche und suche nach “CharacterBody2D”, wähle diese aus und klicke auf “Create”. Dies ist ein Knoten, der für einen 2D-Spieler verwendet wird. Sie sehen vielleicht ein Warnschild ⚠️ neben dem “CharacterBody2D”-Knoten. Dies liegt daran, dass er einige Dinge vermisst, die er gerne hätte.
Wenn Sie mit der rechten Maustaste auf den Knoten klicken, gibt es eine “+ Add Child Node…”-Schaltfläche. Verwenden Sie diese und fügen Sie zwei Knoten hinzu, Sprite2D und CollisionShape2D. Sprite2D wird verwendet, um etwas Grafik zum Spieler hinzuzufügen, während der andere verwendet wird, um Kollisionen zu prüfen. Sie können ihnen auch Namen geben, wenn dies hilft, den Überblick zu behalten. Ich habe meinem CharacterBody2D den Namen “Player” gegeben. So sollte die Szene jetzt aussehen:
Teil 1b - Beheben ⚠️ an CollsionShape2D
Das Warnschild in diesem Fall ist, dass CollsionShape2D tatsächlich keine Kollision hat. Dies können Sie beheben, indem Sie auf den Knoten (links) tippen, dann erscheint ein Panel auf der rechten Seite. Hier erhalten Sie eine Menge Informationen über den Knoten, die Sie ändern können. Spielen Sie gerne mit dem, was dort ist. Aber der, auf den wir uns konzentrieren wollen, ist “Shape”, setzen Sie diesen auf zum Beispiel RectangleShape2D. Es ist nicht sehr wichtig, wir werden die Kollisionen hier nicht verwenden.
Teil 1c - Einen Sprite, Grafik hinzufügen
Wenn Sie auf Sprite2D links klicken, öffnet sich das Feld rechts, in dem “Texture” steht. Hier können Sie ein Bild für den Spieler einfügen. Einfach ein Bild hineinziehen und loslassen.
So sieht es aus, nachdem Sie einen Sprite hinzugefügt haben.
Teil 2 - Eingaben hinzufügen, Steuerung
Oben am Fenster befindet sich eine Menüleiste, “Szene - Projekt - Debug - Editor - Hilfe”. Klicken Sie auf “Projekt” und anschließend auf “Projekteinstellungen”. Hier erscheint eine Menüleiste mit vielen Einstellungen. Klicken Sie auf “Eingabemapping”. Hier können Sie Tasten auf der Tastatur einrichten.
- In dem Feld “Neue Aktion hinzufügen”, schreiben Sie “links” und klicken Sie dann auf “Hinzufügen”.
- Fügen Sie anschließend “rechts”, “hoch” und “runter” hinzu.
- Diese werden als “Aktionen” bekannt sein.
- Bei jeder “Aktion” können Sie Tasten hinzufügen, indem Sie auf den “+” Button rechts klicken.
- Hier können Sie einfach auf die Tastatur klicken und dann auf Hinzufügen klicken.
- Fügen Sie Tasten für alle Aktionen hinzu.
Abschnitt 3 - Ein Skript hinzufügen, um den Spieler zu steuern.
Um Spiel-Logik hinzufügen zu können, also etwas mit dem Spieler, dem Hintergrund oder was auch immer im Spiel sein soll, benötigen wir ein Skript. Skripte sind Code und können in zwei Sprachen geschrieben werden, GDScript oder C#, GDScript ist Standard.
- Klicken Sie auf den Knoten “CharacterBody2D” (ich habe ihn “Player” genannt).
- Klicken Sie auf die Schaltfläche “Skript anhängen” (siehe unten)
- Hier erscheint ein Fenster, in dem Sie die Sprache auswählen können (wählen Sie GDScript) und einen Pfad (lassen Sie ihn einfach so, wie er ist, aber Sie können ihm einen Namen geben), dann klicken Sie weiter. Hier erscheint ein “Skript”-Fenster. Es steht nicht viel hier, um zu Beginn.
extends CharacterBody2D
# Definerer hastigheten til karakteren
# Defines the character's speed
Der eneste denne koden sier for øyeblikket er at koden skal tilhøre en node av typen “CharacterBody2D”, som er spilleren vår.
Vi skal legge til en funksjon her som vi skal bruke til å manipulere spilleren:
Der einzige diese Code im Moment sagt, ist, dass der Code zu einem Knoten vom Typ “CharacterBody2D” gehören soll, der unser Spieler ist.
Wir werden hier eine Funktion hinzufügen, die wir verwenden werden, um den Spieler zu manipulieren:
extends CharacterBody2D
func _physics_process(delta: float) -> void:
# return
# Rückgabe
Physik Prozess?
_physics_process
ist eine Funktion, die bei jedem einzelnen “Frame” aktualisiert wird, also etwa 60 Mal pro Sekunde (Standard). Es gibt eine andere Funktion, die einfach nur _process
heißt, die über die gesamte Zeit aktualisiert wird. Wenn Sie möchten, dass sich der Spieler mit einer gleichmäßigen Geschwindigkeit bewegt, verwenden Sie _physics_process
.
Hier legen wir den Code ein, der den Spieler bewegt.
Teil 4 - Basiseingabe
In Teil 2 hast du Eingabeknöpfe hinzugefügt, jetzt werden wir sie verwenden. Es gibt ein eingebautes Objekt, das Input
heißt, das wir verwenden können, um zu prüfen, ob der Spieler auf das gedrückt hat, was wir in der “Input Map” eingerichtet haben.
Versuche, diesen Code in den _physics_process
Code einzufügen:
if Input.is_action_pressed('right'):
# Hvis høyre tasten trykkes, sett x-hastigheten til 100
velocity.x = 100
# Bewege das Objekt und behandle Kollisionen
move_and_slide()
Was ist move_and_slide()
?
move_and_slide()
ist eine eingebaute Funktion in Godot, die verwendet wird, wenn wir das, was wir darauf anwenden, tatsächlich bewegen wollen. Ohne diese würde der Spieler sich nicht bewegen.
Warning
Die Leerzeichen in den Zeilen sind sehr wichtig, das ist ähnlich wie in Python.
Was passiert, wenn du das Programm startest, indem du auf die Play-Taste im Godot-Fenster drückst und dann “right” drückst?
Wenn jetzt nichts passiert:
- Hast du daran gedacht, etwas in “Input Map” einzurichten?
- Hast du
right
und nichtRight
geschrieben? Also, ist das, was du im Code geschrieben hast, dasselbe wie der Name in der Input Map?
Der gesamte Code bisher
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
move_and_slide()
Versuchen Sie jetzt, Code für 'left'
, 'up'
, 'down'
hinzuzufügen.
Was muss velocity.x
für left
sein? Was ist mit up
und down
?
Der gesamte Code jetzt
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Teil 5 - Den Code reparieren
Ihr werdet vielleicht bemerken, dass der Spieler nicht stoppt, wenn ihr eine Richtung loslasst. Das können wir jetzt reparieren!
Vor allen if
-Anweisungen, fügt eine Zeile hinzu, die die Geschwindigkeit auf 0 setzt. Das könnt ihr tun, indem ihr velocity = Vector2()
schreibt.
Alle Geschwindigkeiten und Richtungen in Godot sind Vektoren, dies ist ein Mathematikkonzept, auf das wir jetzt nicht näher eingehen werden, aber wenn ihr mehr darüber wissen möchtet, was das bedeutet, könnt ihr hier nachlesen: Wikipedia Vektoren.
Die gesamte Codebasis jetzt
extends CharacterBody2D
func _physics_process(delta: float) -> void:
velocity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Wenn du das Spiel jetzt startest, kannst du den Spieler bewegen:
Weiterhin könnt ihr den Code so anpassen, dass die Geschwindigkeit nicht nur eine Zahl ist, sondern anderswo gespeichert werden kann.
Du kannst zum Beispiel (vor der Funktion) eine Konstante hinzufügen, die die Geschwindigkeit verfolgt.
Die gesamte Codebasis am Ende mit const
extends CharacterBody2D
const SPEED = 100
func _physics_process(delta: float) -> void:
velocity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = SPEED
if Input.is_action_pressed('left'):
velocity.x = -SPEED
if Input.is_action_pressed('down'):
velocity.y = SPEED
if Input.is_action_pressed('up'):
velocity.y = -SPEED
move_and_slide()
Abschnitt 6 - Spielen Sie herum!
Wenn Sie zum ersten Abschnitt zurückgehen, Nützliche Ressourcen, können Sie herausfinden, womit Sie weiter experimentieren können.
Danach können Sie versuchen, Ihr eigenes Spiel zu erstellen. Was Sie erstellen, liegt an Ihnen! Wenn Sie etwas völlig Neues erstellen möchten, tun Sie es! Wenn Sie versuchen möchten, ein Spiel nachzubilden, das bereits existiert, tun Sie es! Der beste Weg zu lernen ist zu probieren!