Character controller forbevy_player
A kinematic character controller for Bevy 0.18 built on Avian3D physics — gravity, jumping, collision-aware movement, direction mapping, and fall-damage events behind a single PlayerPlugin.
A working character out of the box
A single PlayerPlugin, configured with a PlayerConfig, handles gravity, jumping, collision-aware movement, input-to-direction mapping, and fall-damage events.
What it gives you
Features
Avian3D physics
3D f32 kinematic body with collision-aware movement.
Configurable tuning
PlayerConfig sets speed, gravity, and jump velocity.
ECS components
Player and PlayerPhysics mark and drive the controller.
Direction mapping
DirectionMap converts keyboard input into movement.
Fall damage
FallDamageEvent fires on hard landings for the game to react.
Spawn helper
spawn_player_entity() spawns a fully configured player.
Get started
Usage
use bevy::prelude::*;
use bevy_player::{PlayerPlugin, PlayerConfig};
App::new()
.add_plugins(PlayerPlugin::new(PlayerConfig::default()))
.run();Questions
Frequently asked
What does the bevy_player crate do?
It is a kinematic character controller for Bevy 0.18 built on Avian3D physics, providing gravity, jumping, collision-aware movement, and fall damage.
How do I configure movement speed and jump?
Pass a PlayerConfig to PlayerPlugin::new — it tunes speed, gravity, and jump velocity, and spawn_player_entity spawns a fully configured player.
How is fall damage handled?
The controller emits a FallDamageEvent on hard landings so the game can apply damage or feedback in its own systems.