- Notifications
You must be signed in to change notification settings - Fork24
A third person camera crate written for Bevy.
License
Apache-2.0, MIT licenses found
Licenses found
The-DevBlog/bevy_third_person_camera
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
- Aim
- Zoom in/out
- Orbit
- Custom Offset
- Cursor Lock
- Custom Sensitivity
- Full Gamepad Support!
Add thebevy_third_person_camera crate:
cargo add bevy_third_person_cameraImport thebevy_third_person_camera crate:
use bevy_third_person_camera::*;
Add theThirdPersonCameraPlugin:
.add_plugins(ThirdPersonCameraPlugin)
Add theThirdPersonCamera component to the camera entity:
commands.spawn((Camera3d::default(),ThirdPersonCamera::default(),));
Add theThirdPersonCameraTarget component to your player:
// Playercommands.spawn((Mesh3d(meshes.add(Mesh::from(Cuboid::new(1.0,1.0,1.0)))),MeshMaterial3d(materials.add(Color::WHITE)),Transform::from_translation(Vec3::new(0.0,0.5,0.0)),ThirdPersonCameraTarget,Player,));
That's it!
- default
- custom
- physics # not working at the moment. Waiting for bevy_rapier3d to support Bevy v0.15.0
cargo run --example <example name>Theoffset will 'offset' the x and y values of the camera respectively. Offset is disabled by default. Turn on withoffset_enabled: true
offset_enabled: true,offset:Offset::new(0.5,0.25),offset_toggle_key:Some(KeyCode::T),offset_toggle_speed:5.0// default
Aiming is calculated using theaim_zoom & thezoom.min values. Please note that the actual zoom level will vary if you change thezoom.min value, even if theaim_zoom value stays the same. Aiming is disabled by default. Turn on withaim_enabled: true
aim_enabled: true,// defaultaim_speed:3.0,// defaultaim_zoom:0.7,// defaultaim_button:Some(MouseButton::Right),// defaultzoom:Zoom::new(1.5,3.0)
The cursor lock feature allows the mouse cursor to toggle between a locked, hidden state, to an unlocked, visible state. When unlocked, the orbiting feature is disabled, thus allowing the cursor to move freely within the window without disrupting the camera's transform. This feature can be fully disabled by setting theenable_cursor_lock_toggle value tofalse and will keep the cursor locked and hidden.
cursor_lock_toggle_enabled: true,cursor_lock_active:true,cursor_lock_key:KeyCode::Space,
Orbiting is enabled by default. However, you can set themouse_orbit_button_enabled setting totrue and the orbiting will only be active while themouse_orbit_button is pressed.
Most settings can be overridden:
let gamepad =Gamepad::new(0);commands.spawn((// These are the default settingsThirdPersonCamera{aim_enabled:false,aim_button:Some(MouseButton::Right),aim_speed:3.0,aim_zoom:0.7,cursor_lock_toggle_enabled:true,cursor_lock_active:true,sacursor_lock_key:KeyCode::Space,sensitivity:Vec2::new(1.0,1.0),mouse_orbit_button_enabled:false,mouse_orbit_button:MouseButton::Middle,offset_enabled:false,offset:Offset::new(0.5,0.4),offset_toggle_speed:5.0,offset_toggle_key:Some(KeyCode::T),// default is Nonezoom:Zoom::new(1.5,3.0),zoom_sensitivity:1.0,gamepad_settings:CameraGamepadSettings{aim_button:Some(GamepadButton::new(gamepad,GamepadButtonType::LeftTrigger2)),mouse_orbit_button:GamepadButton::new(gamepad,GamepadButtonType::LeftTrigger),sensitivity:Vec2::new(7.0,4.0),offset_toggle_button:Some(GamepadButton::new(gamepad,GamepadButtonType::DPadRight)),// default is Nonezoom_in_button:GamepadButton::new(gamepad,GamepadButtonType::DPadUp),zoom_out_button:GamepadButton::new(gamepad,GamepadButtonType::DPadDown),}, ..default()},Camera3d::default(),));
When using third party physics engines such as bevy rapier 3d or avian 3d, you should force the 'sync_player_camera' system to runafter the physics systems. Failing to do this will cause a jittering effect to occur when applying forces/impulses to an object that has a camera entity attached. Simply add the following to your App::new() method (also see examples/physics.rs for complete example):
.configure_sets(PostUpdate,CameraSyncSet.after(PhysicsSet::StepSimulation))// Bevy Rapier 3d.configure_sets(PostUpdate,CameraSyncSet.after(PhysicsSet::Sync))// Avian 3d
| Action | Mouse/Keyboard | Gamepad | Enabled by Default |
|---|---|---|---|
| Zoom In | Scroll Up | D Pad Up | Yes |
| Zoom Out | Scroll Down | D Pad Down | Yes |
| Aim | Right Mouse Button | Left Trigger | No |
| Toggle Offset | E | D Pad Right | No |
| Cursor Lock/Unlock | Space | n/a | Yes |
| Orbit Button | Middle Mouse Button | Left Bumper | No |
| bevy | bevy_third_person_camera |
|---|---|
| 0.16 | 0.2.1 - 0.3 |
| 0.15 | 0.2.0 |
| 0.14 | 0.1.11 - 0.1.14 |
| 0.13 | 0.1.9 - 0.1.10 |
| 0.12 | 0.1.7 - 0.1.8 |
| 0.11 | 0.1.1 - 0.1.6 |
Refer to theChangelog to view breaking changes and updates.
- MIT License (LICENSE-MIT orhttp://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE orhttp://www.apache.org/licenses/LICENSE-2.0)
About
A third person camera crate written for Bevy.
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors9
Uh oh!
There was an error while loading.Please reload this page.



