Expand description

A basic fps-style flycamera for bevy

Controls

  • WASD to move
  • LCTRL to descend
  • Space to ascend
  • Escape to unlock cursor

The controls are customizable

Usage

  1. Add to Cargo.toml, matching major/minor with bevy
[dependencies]
bevy = "X.Y"
bevy-fpscam = "X.Y"
  1. Use the plugin
use bevy_fpscam::FpsCamPlugin;

This will spawn the camera for you. If you want to create the camera yourself, use NoSpawnFpsCamPlugin instead, and add a FpsCam component to your camera.

  1. Add the plugin
fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugin(FpsCamPlugin)
        .run();     
}

Customization

You can modify mouse sensitivity, movement speed and keybindings by modifying the resource of type bevy_fpscam::Config

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugin(FpsCamPlugin)
        .insert_resource(bevy_fpscam::Config{
            movespeed: 2.0,
            sensitivity: 0.01,
            key_bindings: KeyBindings {
                unlock: Some(KeyCode::Enter),
                ..Default::default()
        }}).run();
}

Structs

Global configuration for the camera. modify the resource of this type to change from the default configuration

Represents the player controlled camera. Attaching this to an entity which has a transform will make it controllable by the player. Note that if you put this component on multiple entities they will all be controlled simultaneously by the player.

Spawns a camera and sets up the controls.

Keybindings for controlling the camera. Default is WASD for movement, space for up, LCTRL for down and ESC for unlocking the cursor. All keybinds are optional.

Sets up the controls, but does not actually spawn a camera.