make mouse rotate more reliable

This commit is contained in:
2025-03-16 13:43:01 +01:00
parent 8335d5fab4
commit 8cadb670b7
2 changed files with 3 additions and 6 deletions

View File

@@ -25,7 +25,6 @@ pub struct Controls {
pub fn plugin(app: &mut App) { pub fn plugin(app: &mut App) {
app.init_resource::<Controls>(); app.init_resource::<Controls>();
app.add_systems(PreUpdate, clear_mouse_delta);
app.add_systems(Update, (gamepad_controls, keyboard_controls, mouse_rotate)); app.add_systems(Update, (gamepad_controls, keyboard_controls, mouse_rotate));
app.add_systems(Update, mouse_click.run_if(on_event::<MouseButtonInput>)); app.add_systems(Update, mouse_click.run_if(on_event::<MouseButtonInput>));
app.add_systems(Update, gamepad_connections.run_if(on_event::<GamepadEvent>)); app.add_systems(Update, gamepad_connections.run_if(on_event::<GamepadEvent>));
@@ -103,10 +102,6 @@ fn mouse_rotate(mut mouse: EventReader<MouseMotion>, mut controls: ResMut<Contro
} }
} }
fn clear_mouse_delta(mut controls: ResMut<Controls>) {
controls.keyboard_state.look_dir = Vec2::ZERO;
}
fn keyboard_controls(keyboard: Res<ButtonInput<KeyCode>>, mut controls: ResMut<Controls>) { fn keyboard_controls(keyboard: Res<ButtonInput<KeyCode>>, mut controls: ResMut<Controls>) {
let mut direction = Vec2::ZERO; let mut direction = Vec2::ZERO;

View File

@@ -120,7 +120,7 @@ fn spawn(
} }
fn rotate_view( fn rotate_view(
controls: Res<Controls>, mut controls: ResMut<Controls>,
// todo: Put the player head as a child of the rig to avoid this mess: // todo: Put the player head as a child of the rig to avoid this mess:
mut player: Query<&mut Transform, Or<(With<PlayerRig>, With<PlayerHead>)>>, mut player: Query<&mut Transform, Or<(With<PlayerRig>, With<PlayerHead>)>>,
) { ) {
@@ -131,6 +131,8 @@ fn rotate_view(
tr.rotate_y(gamepad.look_dir.x * -0.001); tr.rotate_y(gamepad.look_dir.x * -0.001);
} }
} }
controls.keyboard_state.look_dir = Vec2::ZERO;
} }
fn toggle_grab_cursor(window: &mut Window) { fn toggle_grab_cursor(window: &mut Window) {