2. Player Character
Bouw een 3D platformer character met movement, jumping en follow camera
Overzicht
In dit hoofdstuk bouw je de player character voor je platformer. Je maakt een CharacterBody3D met WASD movement, jump mechanics, en een simpele follow camera die de player volgt. In het volgende hoofdstuk voegen we camera rotation toe.
Player scene maken

Maak een Player-scene met een CharacterBody3D als root node. Dit is het physics body waar het movement script op komt. Het character model voeg je daarna toe als child.
Ga in de menu naar Scene > New Scene
Selecteer Other Node en zoek naar CharacterBody3D
Klik Create
Hernoem de root node naar Player
Selecteer de Player node en voeg een CollisionShape3D child toe (rechts-klik > Add Child Node)
Kies voor een CapsuleShape3D
Sla de scene op als res://objects/Player.tscn
Player scene hierarchy:
Character model toevoegen

Voeg nu het character model toe als child van de CharacterBody3D.
In de Player.tscn scene, open het FileSystem panel
Navigeer naar models/character.glb
Sleep character.glb naar de Player node in de Scene hierarchy
Het model wordt nu als child toegevoegd onder Player
Selecteer de collisionShape3D
Gebruik de rode handles om de capsuleCollider aan het character te laten passen
Sla de scene op
Voeg de player toe aan de main scene
open scenes/main.tscn
Sleep vanuit het FileSystem het object objects/player.tscn in de scene
Gebruik de move tool om de speler op een platform te zetten
Sla de scene op
View node (camera container)

Voor een platformer maak je een follow camera die de player volgt. Maak een aparte View node die later uitgebreid kan worden met camera rotation.
Open scenes/main.tscn
Rechts-klik op de Main root node > Add Child Node
Kies Node3D en hernoem naar View
Belangrijk! Plaats de View Node op DEZELFDE locatie als de speler
Camera3D Node Toevoegen

De View node heeft dan uiteraard een camera nodig.
Open scenes/main.tscn
Selecteer de View node
Rechts-klik > Add Child Node > Camera3D
BELANGRIJK: Gebruik de Move Tool om de camera boven-en-achter de speler te plaatsen
Scene hierarchy in main.tscn:
View node script
Selecteer de View node en klik op Attach Script
Language: C#
Template: Empty (geen template)
Class Name: View
Path: res://scripts/View.cs
Klik Create
Open scripts/View.cs en voeg variabelen toe voor de target (player), camera, en follow speed:
Voeg de
_PhysicsProcess()method toe. GebruikLerp()voor smooth camera movement (linear interpolation):
De camera en speler toewijzen
Selecteer de View node in de Inspector
Sleep de Camera3D node naar het Camera veld
Sleep de Player node naar het Target veld
Player script toevoegen

Voeg nu een script toe aan de CharacterBody3D root.
Selecteer de Player (CharacterBody3D) root node
Klik op Attach Script (📜+ icoon bovenaan Scene venster)
Language: C#
Template: CharacterBody3D: Basic Movement
Class Name: Player
Path: res://scripts/Player.cs
Klik Create
Het script opent in VS Code met een basis movement template voor CharacterBody3D.
Template aanpassingen
De template gebruikt const voor speed en jump velocity, en verwijst naar de verkeerde input actions. Pas dit aan.
Open scripts/Player.cs en verander
constvariabelen naar[Export]variabelen. Met[Export]zijn de variabelen aanpasbaar in de Inspector. GebruikF2om de naam te wijzigen in het hele bestand:
Zoek in
_PhysicsProcess()naar de regel metInput.GetVector()en pas de input actions aan naar onze input map:
Pas de jump action aan van
ui_acceptnaarjump:
Character animaties
Het character model bevat een AnimationPlayer met drie animaties: idle, walk, en jump. Om deze te kunnen gebruiken moet je eerst de children van het geïmporteerde model toegankelijk maken.
Open objects/Player.tscn
Selecteer de character2 node (het geïmporteerde model)
Rechts-klik op de character2 node > Editable Children
De character2 node klapt nu open en je ziet de interne structuur, inclusief de AnimationPlayer
Animatie logic
Speel nu de animaties af op basis van de player state. Bouw dit stap voor stap op in een aparte method.
Open scripts/Player.cs en voeg eerst de AnimationPlayer variabele toe:
Maak een nieuwe method
UpdateAnimation()onderaan de class. Begin met alleen de idle animatie:
Roep deze method aan onderaan
_PhysicsProcess(), naMoveAndSlide():
Voeg de walk animatie toe wanneer de player beweegt:
Voeg als laatste de jump animatie toe. De jump heeft prioriteit boven walk/idle:
Ga terug naar objects/Player.tscn in de editor
Selecteer de Player root node
In de Inspector, vind het Animation Player veld (onder de Script Parameters)
Sleep de AnimationPlayer node vanuit de scene hierarchy naar dit veld
Sla de scene op
Test de player en camera
Open scenes/main.tscn
Zorg dat de View node correct is ingesteld:
Target veld: Sleep Player node hierheen
Camera veld: Sleep Camera3D child node hierheen
Run de scene (F5)
Test:
WASD - move player in world-space directions
Space - spring
Camera volgt de player smooth
Waarschuwing: De camera kan momenteel niet draaien - je beweegt in world-space richtingen! In het volgende hoofdstuk voegen we camera rotation toe zodat WASD relatief wordt aan je kijkrichting.
Complete scripts
Laatst bijgewerkt