tags: movement title: First-person 3D camera and movement brief: Control a first-person camera using WASD and mouse to look with cursor lock. author: Defold Foundation scripts: character_controller.script
This example shows how to build a simple first-person controller for a 3D scene. You can look around with the mouse and move on the XZ plane using the keyboard (WSAD).
| Input | Action |
|---|---|
| Left mouse click | Lock the cursor and enable mouse look |
| Mouse movement | Rotate camera |
Esc |
Unlock the cursor |
W/S/A/D |
Move forward/backward/left/right on the ground plane |
When the cursor is locked, the script reads mouse movement deltas and rotates the camera accordingly. Movement is normalized to keep a consistent speed in all directions and is clamped within a square area so you cannot wander off the demo scene.
Example collection consists of 3 main parts:
character - The player character game object includes:
character_controller.script component that implements mouse look, cursor lock/unlock, and WASD movement.scene - the models used to create a basic 3D environment:
gui - An on-screen GUI with short instructions.
Tree models with textures by Kay Louseberg: https://kaylousberg.itch.io/kaykit-forest Prototype textures for Defold by Visionaire: https://github.com/Thevisionaire1/3Deforms
Tuning parameters are defined at the top of character_controller.script:
look_sensitivity (degrees per pixel) controls how fast the camera rotatesmove_speed (world units per second) controls walking speedmove_limit (half-size in world units) clamps movement within bounds