3. Mijn Eerste Script
Maak een script en begrijp de basis structuur
Overzicht
Nu je ruimteschip physics heeft, is het tijd voor code! In Godot schrijf je code in scripts.
Een script is een bestand met code dat je aan een node koppelt. Het script bepaalt het gedrag van die node - bijvoorbeeld hoe een ruimteschip beweegt, hoe een vijand reageert, of hoe een deur opengaat.
Het ruimteschip aanpassen

Momenteel bevat het ruimteschip een StaticBody3D, wat ervoor zorgt dat je het schip niet kunt besturen met een script. Pas daarom het originele ruimteschip-asset aan zodat er geen StaticBody3D meer in zit.
Kijk in de kenney_space-kit/ map en zoek het ruimteschip dat jij hebt gekozen
Dubbelklik erop om de import settings te openen
Duidt de StaticBody3D aan
Aan de rechterkant vind je de Import settings. Vink Skip Import AAN
Je eerste script maken

Maak een script voor het ruimteschip.
Maak een nieuw C# script
Selecteer de Player node in de Scene Hierarchy
Klik in het Inspector panel (rechts) op het Attach Script icoon (een scroll met een + teken) bovenaan
Het "Attach Node Script" dialoog verschijnt met verschillende opties:
Language: Zorg dat C# geselecteerd is (NIET GDScript!)
Inherits: Laat staan op CharacterBody3D
Class Name: Vul in PlayerController
Template: Node: Default
Path: Verander naar res://Scripts/PlayerController.cs
Klik op Create
Het script opent automatisch in VS Code.
Script template
Godot heeft automatisch een template (sjabloon) gegenereerd met standaard code. Dit is wat je in VS Code ziet:
Hieronder volgt een stap-voor-stap uitleg van elk onderdeel van deze template:
1. Using statements (regel 1-2)
using Godot; geeft toegang tot alle Godot functionaliteit zoals GD.Print(), Vector3, Input, etc.
2. Class declaratie (regel 4)
Je script is een class die overerft van CharacterBody3D. Dit betekent dat je script alle eigenschappen en functies van CharacterBody3D krijgt (zoals Position, Velocity, collision detection), plus je eigen custom gedrag.
3. _Ready() method (regel 6-8)
_Ready(): Wordt één keer aangeroepen wanneer de node de scene binnenkomt. Perfect voor initialisatie!
4. _Process(delta) method (regel 10-12)
_Process(delta): Wordt elke frame aangeroepen (meestal 60 keer per seconde). Gebruikt voor visuele updates, UI, animaties en andere niet-physics updates.
De parameter delta is de tijd (in seconden) sinds het vorige frame:
Een frame is één enkele "foto" van je game. Games draaien typisch op 60 FPS (frames per second)
Delta is de tijd tussen frames. Bij 60 FPS is delta ongeveer 0.0167 seconden (1/60)
Delta gebruiken zorgt dat beweging frame-rate independent is - het werkt even smooth op 30 FPS als op 120 FPS!
_physicsprocess
Tijdens deze unit maak je geen gebruik van _Process, omdat je het ruimteschip physics-eigenschappen geeft. In plaats daarvan gebruik je _PhysicsProcess(delta):
In tegenstelling tot
_Process()(dat varieert met de framerate), draait_PhysicsProcess()op een vaste frequentiePerfect voor CharacterBody3D beweging met
MoveAndSlide()- zorgt voor consistente physicsAls je game op 120 FPS draait, wordt
_Process()120x per seconde aangeroepen, maar_PhysicsProcess()blijft 60x per secondeDit zorgt voor stabielere physics simulatie
Wanneer gebruik je welke?
_PhysicsProcess()→ Beweging met physics (CharacterBody3D, RigidBody3D), collision detection_Process()→ Camera effecten, UI updates, visuele feedback, particle effects
Je eerste code schrijven en testen
Voeg code toe aan de _Ready() functie om te testen of het script werkt:
GD.Print() is Godot's debug print functie - vergelijkbaar met Console.WriteLine().
Build en test
Sla op in VS Code (Ctrl+S)
Ga terug naar Godot en druk op F6 (of klik op Run Current Scene)
Godot build automatisch en start je scene
Bekijk het Output panel onderaan in Godot - je zou moeten zien:
PlayerController is ready!
_process() en _physicsprocess() in actie
_process() en _physicsprocess() in actieJe kunt testen hoe vaak deze functies worden aangeroepen:
Voeg tijdelijk deze code toe aan je script:
Start het spel en kijk in het Output panel - je ziet dat beide functies continu worden aangeroepen! _PhysicsProcess() heeft altijd een consistente delta (ongeveer 0.0167), terwijl _Process() kan variëren.
Vergeet niet deze test prints weer te verwijderen voordat je verder gaat - anders wordt je Output panel onleesbaar!
Godot-specifieke debugging tips
Veelvoorkomende Godot fouten:
GD.print()werkt niet - gebruikGD.Print()met hoofdletter PScript werkt niet - controleer of het script gekoppeld is aan de node (zie Inspector panel)
Code wijzigingen doen niets - vergeet niet te builden in Godot (druk F6)
Build errors niet zichtbaar - kijk onderaan in Godot naar het Output panel
Complete Script
Laatst bijgewerkt