3. Isometric Camera
Bouw een isometric camera met WASD movement, zoom en rotation
Overzicht
In dit hoofdstuk leer je:
Camera3D node toevoegen en configureren als orthographic isometric camera
IsometricCamera.cs script maken
WASD movement met rotation-aware directional input
Mouse wheel zoom (in/out)
Middle-mouse button rotation rond pivot point
Wat is een isometric camera?
Een isometric camera combineert:
Orthographic projection: Geen perspectief - objecten blijven dezelfde grootte ongeacht afstand (perfect voor strategy games)
Isometric angle: 45° rotatie horizontaal + gekanteld kijkpunt (klassieke city builder look)
Camera Setup
Voeg de camera toe aan de scene, configureer deze voor isometric view, en maak het script.
Node toevoegen:
Open
scenes/main.tscn.Voeg een Camera3D child toe aan Main en noem deze
Camera.
Configuratie (Inspector):
Projection: Zet op
Orthographic.Size: Zet op
10(bepaalt zoom level).Transform → Rotation: Zet X op
-45, Y op45, Z op0.Position: Verplaats de camera wat omhoog met de move tool zodat je de stad ziet.
Script maken:
Maak een nieuw script
scripts/IsometricCamera.csdat erft vanCamera3D.Koppel het script aan de Camera node.
Camerabeweging Implementeren
Implementeer WASD-beweging die rekening houdt met de rotatie van de camera (zodat 'W' altijd 'naar voren' op het scherm is).
Nieuwe Godot-specifieke elementen:
[Export]- Maakt de variabele zichtbaar in de InspectorRotationDegrees- De rotatie in graden (handiger dan radialen)Input.GetAxis()- Geeft een waarde tussen -1 en 1 op basis van twee tegengestelde actiesMathf.DegToRad()- Converteert graden naar radialen voor trigonometrische berekeningen
Open
scripts/IsometricCamera.csvoeg 2 export velden toe voor:
bewegingssnelheid
camera-hoek.
Voeg een private field toe voor de horizontale rotatie (yaw). Deze yaw-hoek slaat de horizontale draaiing op en kan later aangepast worden bij rotatie.
Voeg de
_Ready()method toe om de initiële camera-hoek in te stellen.RotationDegreesstelt de camera-hoek in. X controleert de kijkhoek naar beneden (-45°), Y de horizontale draaiing (45°).
Voeg een lege
_Process()method toe:
Bereken de forward en right vectors op basis van de yaw-hoek. Deze vectors geven de richtingen aan waarin de camera moet bewegen op basis van haar huidige rotatie. Zo blijft 'W' altijd 'vooruit' ten opzichte van de camera.

Maak een bewegingsrichting variabele. Begin met een nul-vector en bouw de bewegingsrichting stap voor stap op.
Voeg input voor vooruit/achteruit beweging toe.
Input.GetAxis()geeft -1 (achteruit), 0 (niets), of 1 (vooruit). Vermenigvuldig met de forward vector voor beweging in de juiste richting.
Voeg input voor links/rechts beweging toe:
Pas de camera positie aan op basis van de bewegingsrichting.
Normalized()zorgt ervoor dat diagonale beweging niet sneller is. Vermenigvuldig metdeltavoor frame-rate independent beweging.
Test met F5. Je kunt nu met WASD over de map vliegen!
Zoom en Rotatie Toevoegen
Voeg zoom (muiswiel) en rotatie (rechter muisknop) toe aan de camera.
Nieuwe Godot-specifieke elementen:
_Input()- Ontvangt alle input events (toetsenbord, muis, etc.)InputEvent- Base class voor alle input eventsInputEventMouseButton- Specifiek event voor muisknoppenInputEventMouseMotion- Event voor muisbewegingSize- Bepaalt de grootte van de orthographic camera (zoom level)Mathf.Clamp()- Beperkt een waarde tussen een minimum en maximum
Voeg vier nieuwe exports toe bovenaan de class voor zoom en rotatie instellingen. Deze vier nieuwe exports bepalen hoe snel de camera zoomt en roteert, en de minimum/maximum zoom levels.
Voeg private fields toe voor rotatie tracking. Deze variabelen slaan op of de camera aan het roteren is, de laatste muispositie, en het punt waar de camera omheen draait.
Voeg een lege
_Input()method toe:
Voeg zoom in/out logica toe. Voor orthographic cameras betekent een kleinere
Sizemeer ingezoomd.Mathf.Clamp()voorkomt te ver in- of uitzoomen.
Voeg zoom out logica toe:
Voeg rotatie start logica toe. Het
iskeyword cast het event naarInputEventMouseButton. Bewaar de muispositie en het pivot point (dit wordt later berekend in een helper method).
Voeg rotatie stop logica toe:
Voeg rotatie beweging toe. Check of de muis beweegt terwijl de camera roteert. Het
&&zorgt ervoor dat alleen geroteerd wordt als de middelste muisknop ingedrukt is.
Bereken hoeveel graden de camera moet roteren.
deltaXis het verschil in pixels. Vermenigvuldig metRotationSpeedvoor een controleerbare rotatie. Update_lastMousePosvoor de volgende frame.
Pas de yaw aan en update de camera rotatie:
Laat de camera rond het pivot point roteren (orbit). Bereken de afstand van de camera tot het pivot point (
offset), roteer deze afstand, en plaats de camera op de nieuwe positie. Dit zorgt voor een orbit-effect.
Voeg de helper method toe om het grondpunt te vinden waar de camera omheen draait. Plaats dit na de
_Input()method. Deze method berekent waar het midden van het scherm het grondvlak (Y=0) raakt. Dit wordt het pivot point voor rotatie.
Test met F5. Probeer de zoom (muiswiel) en rotatie (middelste muisknop + slepen)!
Test je stad met de camera controls
Nu je een werkende camera hebt, kan je je city uit Chapter 2 verkennen!
Druk F5 om het spel te runnen
Gebruik alle camera controls:
WASD - Beweeg de camera over je city
Mouse Wheel - Zoom in/out
Middle Mouse + drag - Roteer rond een punt
Bekijk je handgebouwde GridMap city vanuit verschillende hoeken!
Je hebt nu een professionele isometric camera zoals in echte city builder games!
Volledig script
Laatst bijgewerkt