make mouse rotate more reliable
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user