Je eerste regels code
Je karakter staat op het scherm en er hangt een script aan met één regel erin. Voordat je aan het bewegingsscript begint, gebruik je dat script één keer om te zien dat je code echt draait.
Geschreven voor Godot 4.7.x — zie Godot-versies voor compatibiliteit.
Hier bouw je op verder
- Python Variabelen
- Python Print
- Python Functies
Stap 1: Een functie die bij de start draait
Open in Godot het script van je CharacterBody2D. Er staat één regel in: extends CharacterBody2D. Typ daaronder, met een lege regel ertussen:
func _ready() -> void:
var levens = 3
print("Het spel is gestart.")
print("Ik heb ", levens, " levens.")
_ready() is een functie die Godot zelf aanroept, één keer, zodra je scène start. Je hoeft hem dus nergens aan te roepen — anders dan in Python, waar jij groet() schrijft om groet() te laten gebeuren.
De rest ken je uit Python: var levens = 3 maakt een variabele, en print() zet iets op het scherm. In GDScript schrijf je var ervoor; verder werkt het hetzelfde.
Stap 2: Kijk waar je output landt
- Druk op
F5om je spel te starten. - Kijk onderin je Godot-scherm op het tabblad Uitvoer (Engels: Output).
Daar staan nu twee regels:
Het spel is gestart.
Ik heb 3 levens.
Dit tabblad wordt je belangrijkste gereedschap. Telkens als je niet zeker weet of een stuk code draait, zet je er een print() in en kijk je hier. In Fouten zoeken staat hoe je daar systematisch mee werkt.
Haal deze _ready()-functie daarna weer weg. In het volgende hoofdstuk begin je met een schone lei aan het bewegingsscript.
Opdracht 4.3.a: laat Godot rekenen
Breid je _ready() uit zodat Uitvoer drie regels toont:
- Een begroeting met je eigen naam erin.
- Het aantal levens, uit een variabele.
- Een regel die je punten per level laat zien, uitgerekend door Godot zelf — dus niet het antwoord ingetypt, maar een som in je code.
Klik hier voor een tip.
Rekenen doe je in GDScript net als in Python: 10 * 3 mag zo tussen de haakjes van print(). Combineer tekst en een getal met komma's: print("Punten: ", 10 * 3).
Klik hier voor de oplossing.
extends CharacterBody2D
func _ready() -> void:
var naam = "Sam"
var levens = 3
print("Hallo ", naam)
print("Ik heb ", levens, " levens.")
print("Punten per level: ", 10 * 3)
In Uitvoer staat Punten per level: 30. Dat getal staat nergens in je script: Godot rekent het uit terwijl je spel draait.
Check je begrip: _ready() versus _process()
Wat denk je dat er gebeurt als je _ready() vervangt door _process(delta)?
Antwoord
_ready() draait één keer bij start. _process(delta) draait elke frame (~60 keer per seconde). Je Uitvoer-tabblad raakt dan in een paar seconden vol met dezelfde twee regels. Handig om bewegende waardes te volgen, niet handig voor een eenmalige startmelding.
Er gaat iets mis
Ik krijg een SyntaxError bij _ready()
Oorzaak: Verkeerde indentatie of de : aan het einde van de functie-regel is vergeten.
Oplossing:
- Zorg dat
func _ready() -> void:op een dubbele punt eindigt. - Alle regels die bij de functie horen, moeten ingesprongen zijn met een tab of vier spaties — niet mengen.
- Lege regels in de functie zijn prima; mengen van tabs en spaties is dat niet.
Ik zie geen output in het Uitvoer-tabblad
Oorzaak: Het spel is niet gestart, of het Uitvoer-tabblad staat dicht.
Oplossing:
- Druk op
F5om het spel te starten. - Klik onderin op het tabblad Uitvoer (Engels: Output) — soms staat het verstopt naast Debugger of Audio.
- Geen
F5-knop? Stel eerst een Main Scene in via Project → Project Settings → Run → Main Scene (zie Je eerste 2D-scène).
Zelf vinden: zet print("hier") als allereerste regel in de functie. Blijft Uitvoer ook dan leeg, dan draait je script niet en ligt het aan de scène, niet aan je code.
Wat daarna?
In Het bewegingsscript bouwen schrijf je in zeven korte lessen het script waarmee je karakter valt, loopt en springt.