A basic first-person fly camera for Bevy 0.10
- WASD to move horizontally
- SPACE to ascend
- LSHIFT to descend
- ESC to grab/release cursor.
There are a few notable differences from bevy_fly_camera...
- No linear interpolation
- Cursor grabbing
- Shorter code
- Single-line setup
- A tiny bit faster?
-
Add to
Cargo.toml
or copylib.rs
to your own file[dependencies] bevy = "0.10" bevy_flycam = "*"
or
[dependencies] bevy = "0.10" bevy_flycam = { git = "https://github.com/sburris0/bevy_flycam" }
-
Include the prelude:
use bevy_flycam::prelude::*;
This will spawn a camera for you. Use
NoCameraPlayerPlugin
if you do not want this and make sure to use.insert(FlyCam)
on your own camera or else this plugin won't know what to move. -
Add the
PlayerPlugin
:#[bevy_main] fn main() { App::new() .add_plugins(DefaultPlugins) .add_plugin(PlayerPlugin) .run(); }
Alternatively you can see the example basic.rs
or scroll.rs
located in the examples folder.
You can run the example by cloning this repository and run the command: cargo run --release --example basic
To modify player movement speed or mouse sensitivity add it as a resource.
Same thing goes for the keybindings used for moving the camera.
#[bevy_main]
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(PlayerPlugin)
.insert_resource(MovementSettings {
sensitivity: 0.00015, // default: 0.00012
speed: 12.0, // default: 12.0
})
.insert_resource(KeyBindings {
move_ascend: KeyCode::E,
move_descend: KeyCode::Q,
..Default::default()
})
.run();
}
bevy_flycam's crate version follows bevy's minor version as shown:
bevy | bevy_flycam |
---|---|
0.10.1 |
0.10.1 |
PRs are very welcome.