Een speelbaar karakter
Tijd voor een speler. In deze les bouw je je karakter op uit drie nodes die samen één geheel vormen: een lichaam dat kan bewegen en botsen, een sprite die je ziet, en een collision-vorm zodat de physics weet waar het karakter ophoudt.
Geschreven voor Godot 4.5.x — zie Godot-versies voor compatibiliteit.
Voorspel: waarom drie nodes?
Waarom denk je dat we het karakter niet in één node stoppen, maar opbouwen uit drie?
Antwoord
Elke node doet één ding goed. CharacterBody2D regelt beweging en physics; Sprite2D regelt hoe het karakter eruitziet; CollisionShape2D regelt waar het karakter botst. Wil je later de afbeelding wisselen of een groter hitbox-blokje? Dan pas je alleen die node aan — de rest blijft staan.
Stap 1: Voeg een CharacterBody2D toe
CharacterBody2D is de basis van een speelbaar 2D-karakter. Hij ondersteunt beweging, zwaartekracht en botsingen met andere physics-objecten (zoals je tegels).
- Klik met rechts in de Scene Tree → Add Child Node.
- Zoek naar
CharacterBody2Den voeg hem toe.
Stap 2: Voeg een Sprite2D toe als child
Een Sprite2D is een platte 2D-afbeelding. We hangen hem onder de CharacterBody2D zodat hij mee beweegt.
- Klik met rechts op de
CharacterBody2D→ Add Child Node. - Voeg een
Sprite2Dtoe. - Selecteer de
Sprite2Den sleep je karakter-afbeelding naar het Texture-veld in de Inspector.
Stap 3: Voeg een CollisionShape2D toe als child
Zonder collision-vorm weet Godot niet waar je karakter eindigt en zakt hij door alles heen.
- Klik met rechts op de
CharacterBody2D→ Add Child Node. - Voeg een
CollisionShape2Dtoe. - Selecteer hem en kies bij Shape in de Inspector een
RectangleShape2D. - Pas de grootte aan zodat de rechthoek netjes om je karakter-afbeelding past.
Je Scene Tree ziet er nu zo uit:
CharacterBody2D
├── Sprite2D
└── CollisionShape2D
In de volgende les voegen we beweging toe.
Er gaat iets mis
Mijn karakter valt door de vloer
Oorzaak: De CollisionShape2D ontbreekt of is niet goed ingesteld, of je tiles hebben nog geen collision.
Oplossing:
- Controleer of je
CharacterBody2DeenCollisionShape2Dals child heeft. - Controleer of die
CollisionShape2Deen Shape heeft ingesteld (bijvoorbeeldRectangleShape2D). - Controleer of je
TileMapLayereen Physics Layer heeft — zie Collision op je tegels.
Ik zie mijn karakter niet in het scherm
Oorzaak: De Sprite2D heeft geen texture, of het karakter staat buiten het zichtbare gebied.
Oplossing:
- Selecteer de
Sprite2Den sleep een afbeelding naar het Texture-veld in de Inspector. - Klik op je
CharacterBody2Den sleep hem in de viewport naar het midden.
Ik krijg een waarschuwing bij CollisionShape2D
Oorzaak: De CollisionShape2D heeft nog geen shape.
Oplossing:
- Selecteer de
CollisionShape2D. - Klik in de Inspector op het Shape-veld.
- Kies
New RectangleShape2D.