godot-first-person-controller

Implement a Godot 4.6 first-person controller with sprint sway.

8|3|Updated Jun 12, 2026
One-click install
npx skills add https://github.com/arthur0n/xenodot-forge --skill godot-first-person-controller
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: godot-first-person-controller
Source: https://github.com/arthur0n/xenodot-forge/tree/main/plugin/skills/godot-first-person-controller
Command: npx skills add https://github.com/arthur0n/xenodot-forge --skill godot-first-person-controller

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps you implement a reliable first-person player controller in Godot without fighting camera setup, movement math, or input edge cases. It is aimed at projects where the player must look through their own eyes, move relative to facing, jump on the floor, and keep sprint and crouch behavior predictable.

Core Features & Use Cases

  • First-person movement: Builds a CharacterBody3D player with body yaw, head pitch, gravity, jump, and camera-relative WASD.
  • Sprint and crouch support: Adds hold-to-run and hold-to-crouch behavior with smooth stance changes and clear precedence rules.
  • Procedural sprint view-model motion: Drives a held weapon’s running feel with a dedicated SprintSway node so weapon animation layers do not fight each other.
  • Use case: You are creating an FPS in Godot 4 and need a tested controller pattern that covers mouse look, movement, crouching, sprinting, and weapon sway in one coherent setup.

Quick Start

Ask the skill to generate a Godot first-person player scene and script with yaw-on-body, pitch-on-head, jump, sprint, crouch, and view-model sprint sway.

Frequently Asked Questions about godot-first-person-controller

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up a first-person controller in Godot 4 with camera-relative movement and jump?

A first-person controller in Godot uses a CharacterBody3D for body yaw, a head node for pitch, camera-relative WASD movement, and gravity with jump logic. This setup synchronizes camera rendering and input for FPS player entities.

How do I implement crouch and sprint mechanics in a Godot FPS controller?

Crouch and sprint mechanics are implemented using hold-to-run and hold-to-crouch inputs with smooth stance changes and clear precedence rules. This ensures predictable behavior when switching between sprinting and crouching states.

How does procedural sprint sway work for held weapons in Godot?

Procedural sprint sway is driven by a dedicated SprintSway node that separates weapon motion from animation layers. This prevents transform conflicts and keeps weapon sway synchronized with player movement.

Does this first-person controller pattern work when the camera renders inside a SubViewport in Godot?

Yes, this controller is designed for Godot 4.6 setups where the camera renders inside a SubViewport. It synchronizes input, stance changes, and view-model motion per viewport to avoid transform conflicts.

Why do my weapon animations conflict with my first-person controller transforms in Godot?

Transform conflicts occur when weapon animation layers fight controller motion. Using a separate SprintSway node isolates procedural view-model movement, preventing animation layers from overriding player transforms.

Do I need typed GDScript and unique collision shapes for a Godot first-person controller?

Yes, this pattern requires typed GDScript and unique capsule collision shapes for the CharacterBody3D. These ensure reliable collision detection and type-safe input handling across the player entity.