Skip to content

FPS Tools

Type: Action
Category: FPS

All-in-one controller for first-person and third-person games. Handles WASD movement, jumping, sprinting, crouching, mouselook, and optional inventory variables. Ideal for rapid prototyping.

Properties

Camera / View

Property Default Description
Camera Camera object in the scene
Perspective First Person First Person or Third Person
Distance 4.0 Camera-to-character distance (TPS only)
Sensitivity 2.0 Mouse sensitivity
Mouse Smooth 0.7 Mouse smoothing (1 = instant)
Clamp Pitch 1.4 Vertical pitch limit in radians
Invert Y False Invert mouse vertical axis

Movement

Property Default Description
Physics Character Character (uses walkDirection) or Dynamic (uses applyMovement)
Walk Speed 5.0 Walking speed
Sprint Speed 10.0 Sprinting speed
Jump Force 7.0 Jump impulse
Acceleration 0.25 Acceleration/deceleration lerp
Air Control 0.3 Horizontal air control (0–1)

Key Bindings

Property Default
Forward W
Backward S
Left A
Right D
Jump Space
Sprint Left Shift
Crouch Left Ctrl
Interact E

Inventory Variables (optional)

Property Default Description
Health True, Max=100 Creates BGE property health
Armor False, Max=100 Creates BGE property armor
Ammo True, Max=30 Creates BGE property ammo
Reserve True, Max=90 Creates BGE property ammo_reserve
Score False Creates BGE property score
Stamina False, Max=100 Creates BGE property stamina, limits sprinting

Sockets

Socket Direction Type
In Input Exec
Out Output Exec

Typical usage

Basic FPS controller

[On Update] → [FPS Tools:
                   Camera=fps_camera
                   Perspective=First Person
                   Walk Speed=5.0
                   Sprint Speed=10.0
                   Jump Force=7.0
                   Health=True, Max HP=100
                   Ammo=True, Max Ammo=30]

BGE properties created on init

self.own['health']      = 100.0  # if Health=True
self.own['ammo']        = 30     # if Ammo=True
self.own['ammo_reserve']= 90     # if Reserve=True
self.own['is_crouching']= False
self.own['is_sprinting']= False
self.own['is_grounded'] = False

Notes

  • Connect to On Update — manages mouselook and movement every frame.
  • The mouse is hidden and centered automatically on the first frame.
  • For additional mechanics (shooting, interaction), use FPS Raycast after this node.
  • For fine-grained control, use Mouse Look with custom movement logic instead of this node.