Er gaat iets mis!
Geen paniek! Zoek hieronder je probleem op. De oplossingen zijn gegroepeerd per onderwerp.
Opstarten
Mijn spel doet niks als ik op play druk
Oorzaak: geen main scene ingesteld, of scene niet opgeslagen
Oorzaak: Godot weet niet welke scene hij moet opstarten, of de scene bestaat nog niet als bestand op schijf.
Oplossing:
- Sla je scene op met
Ctrl + Sals je dat nog niet gedaan hebt - Godot vraagt de eerste keer automatisch welke scene de main scene is — kies je level of world scene
- Wil je het later wijzigen? Ga naar Project → Project Settings → Application → Run → Main Scene
Beweging & physics
Mijn karakter beweegt niet
Oorzaak: script niet gekoppeld, of move_and_slide() mist
Oorzaak: Beweging via velocity en move_and_slide() werkt alleen als het script correct is gekoppeld aan een CharacterBody2D én move_and_slide() wordt aangeroepen.
Oplossing:
- Controleer of je script gekoppeld is aan de juiste node (je ziet een script-icoontje naast de node in de Scene Tree)
- Controleer of bovenaan je script
extends CharacterBody2Dstaat - Controleer of
move_and_slide()aan het einde van_physics_process()staat - Staat je
SPEEDwaarde hoog genoeg? Probeer300.0
Mijn karakter valt door de grond
Oorzaak: CollisionShape2D mist bij het karakter of de tilemap heeft geen Physics Layer
Oorzaak: Godot detecteert botsingen alleen als zowel het karakter als de grond een collision shape hebben. Als één van de twee ontbreekt, valt het karakter er doorheen.
Oplossing:
- Controleer of je karakter een
CollisionShape2Dheeft als child-node - Controleer of de TileMapLayer een Physics Layer heeft: open de TileSet → tabblad Physics → klik Add Element
- Controleer of de collision shapes niet te klein zijn t.o.v. de sprite
Mijn karakter kan niet springen
Oorzaak: is_on_floor() geeft false, of is_action_just_pressed mist het woord "just"
Oorzaak: Springen werkt alleen als Godot weet dat het karakter op de grond staat. Dat vereist een werkende collision met de grond. Daarnaast moet je just_pressed gebruiken — anders wordt de sprong elke frame herhaald.
Oplossing:
- Gebruik
Input.is_action_just_pressed("ui_accept")— het woordjustis verplicht - Controleer of
is_on_floor()trueteruggeeft: voeg tijdelijkprint(is_on_floor())toe - Is je
JUMP_VELOCITYnegatief? Omhoog = negatieve Y. Gebruik bijv.-800.0
Mijn TileMap collision doet niks
Oorzaak: Physics Layer vergeten toe te voegen aan de TileSet
Oorzaak: Tiles zien er wel uit als platforms, maar hebben standaard geen fysische eigenschappen. Die moet je handmatig toevoegen via een Physics Layer in de TileSet.
Oplossing:
- Selecteer de
TileMapLayernode - Klik op de
TileSetresource in de Inspector - Ga naar het tabblad Physics
- Klik op Add Element om een Physics Layer toe te voegen
- Selecteer daarna de tiles in de TileSet-editor en teken de collision shape
Code & scripting
Ik krijg een foutmelding in de console
Oorzaak: zie de tabel hieronder voor veelvoorkomende meldingen
Oorzaak: Foutmeldingen geven altijd het regelnummer en een beschrijving. Lees de melding volledig — het regelnummer vertelt je precies waar het misgaat.
| Foutmelding | Betekenis | Oplossing |
|---|---|---|
Invalid call. Nonexistent function | Je roept een functie aan die niet bestaat | Controleer de spelling en of je het juiste node-type gebruikt |
Node not found: "Sprite2D" | De node $Sprite2D bestaat niet | Controleer of de naam in je code exact overeenkomt met de naam in de Scene Tree (hoofdlettergevoelig!) |
Identifier not found: velocity | velocity is niet beschikbaar | Zorg dat je script extends CharacterBody2D heeft bovenaan |
Expected end of statement | Syntaxfout in je code | Controleer of je geen :, ) of inspringing mist |
Global werkt niet / Global.score geeft een fout
Oorzaak: Autoload is niet ingesteld in Project Settings
Oorzaak: Global is geen ingebouwd Godot-concept. Het is een script dat je zelf als Autoload moet registreren. Zonder die instelling kent Godot de naam Global niet.
Oplossing:
- Ga naar Project → Project Settings → Autoload
- Klik op het mapje naast Path en kies
global.gd - Vul bij Node Name precies
Globalin (met hoofdletter) - Klik op Add
Visueel & animaties
Ik krijg een fout: "Attempt to call function on a null instance"
Oorzaak: $AnimatedSprite2D bestaat niet — verkeerde naam of node ontbreekt
Oorzaak: Godot kan de node $AnimatedSprite2D niet vinden. Dit betekent dat de naam in je script niet overeenkomt met de naam in de Scene Tree, of dat je nog $Sprite2D gebruikt terwijl die node is vervangen.
Oplossing:
- Controleer de naam in de Scene Tree: staat er
AnimatedSprite2D? Dat is de exacte naam die je in je script moet gebruiken (hoofdlettergevoelig) - Controleer of je script
$AnimatedSprite2Dgebruikt — niet$Sprite2D - Is de
AnimatedSprite2Deen child van deCharacterBody2D? Anders kan het script hem niet vinden met$
Mijn animatie speelt niet af
Oorzaak: verkeerde node, typo in animatienaam, of play() wordt niet aangeroepen
Oorzaak: play() werkt alleen op AnimatedSprite2D. Een typo in de animatienaam of een fout in de conditie zorgt ervoor dat de aanroep nooit plaatsvindt.
Oplossing:
- Controleer of je
$AnimatedSprite2Dgebruikt (niet$Sprite2D) - De animatienaam is hoofdlettergevoelig:
"idle"is niet hetzelfde als"Idle" - Voeg tijdelijk
print("animatie speelt")toe om te checken of de code wordt bereikt
Mijn animatie stopt na één frame of loopt niet door
Oorzaak: Loop staat uit in SpriteFrames, of play() wordt elke frame opnieuw aangeroepen
Oorzaak: Als Loop uitstaat, speelt de animatie één keer en stopt. Als je play() elke frame aanroept, herstart de animatie steeds opnieuw en lijkt hij stil te staan.
Oplossing:
- Open de SpriteFrames-editor → controleer of het Loop-icoontje is ingeschakeld voor de animatie
- Zorg dat je
play()alleen aanroept als de animatie verandert, niet elke frame opnieuw
Mijn sprite is onzichtbaar
Oorzaak: geen texture ingesteld, sprite staat buiten beeld, of zichtbaarheid is uit
Oorzaak: Godot toont een lege node als er geen texture is ingesteld, of als de node buiten de camera valt.
Oplossing:
- Heb je een texture toegewezen? Sleep een afbeelding naar de
Textureeigenschap in de Inspector - Controleer de positie — staat de sprite buiten het scherm?
- Is
Visibleaangevinkt in de Inspector?
Mijn afbeelding is wazig / pixel art ziet er wazig uit
Oorzaak: Godot gebruikt standaard lineaire filtering, wat pixel art vervaagt
Oorzaak: Godot past standaard een blur-filter toe op afbeeldingen om ze vloeiender te laten schalen. Voor pixel art wil je juist harde pixels.
Oplossing:
- Ga naar Project → Project Settings
- Zoek naar
Default Texture Filter - Verander
LinearnaarNearest
Mijn bestanden staan niet in het project
Oorzaak: bestanden staan niet in de projectmap
Oorzaak: Godot kan alleen bestanden gebruiken die in de projectmap staan (res://). Bestanden elders op je computer zijn niet zichtbaar.
Oplossing:
- Klik linksonder in Godot met de rechtermuisknop op
res://→ Open in File Manager - Kopieer je afbeeldingen naar deze map
- Ga terug naar Godot — het importeert de bestanden automatisch
Sleep bestanden nooit rechtstreeks vanuit de Windows Verkenner naar Godot. Kopieer ze altijd naar de projectmap eerst.
Signals
Mijn signal body_entered wordt niet aangeroepen
Oorzaak: collision layers komen niet overeen, of het signal is niet gekoppeld
Oorzaak: Godot voert signals alleen uit als de signal is gekoppeld én de collision layers van de twee objecten elkaar overlappen. Als de layers niet overeenkomen, detecteert de Area2D de CharacterBody2D niet.
Oplossing:
- Controleer of het signal is gekoppeld: selecteer de
Area2D→ tabblad Node → staat er een functienaam naastbody_entered? - Controleer de Collision Layer en Mask van zowel de
Area2Dals deCharacterBody2Din de Inspector — minstens één waarde moet overlappen - Heeft de
Area2DeenCollisionShape2Dals child? Zonder dit detecteert hij niks
Algemene tips
- Sla regelmatig op met
Ctrl + S - Gebruik
print()om te debuggen — print variabelen om te zien wat er werkelijk gebeurt - Lees foutmeldingen volledig — het regelnummer en de beschrijving wijzen je direct naar het probleem
- Godot is hoofdlettergevoelig —
Sprite2Dis niet hetzelfde alssprite2d