fix look around with gamepad
This commit is contained in:
@@ -37,7 +37,7 @@ pub fn plugin(app: &mut App) {
|
||||
app.register_type::<CameraState>();
|
||||
app.init_resource::<CameraState>();
|
||||
app.add_systems(Startup, startup);
|
||||
app.add_systems(Update, (update, rotate_view));
|
||||
app.add_systems(Update, (update, rotate_view_keyboard, rotate_view_gamepad));
|
||||
}
|
||||
|
||||
fn startup(mut commands: Commands) {
|
||||
@@ -92,7 +92,7 @@ fn update(
|
||||
*cam_transform = Transform::from_translation(cam_pos).looking_at(target, Vec3::Y);
|
||||
}
|
||||
|
||||
fn rotate_view(
|
||||
fn rotate_view_keyboard(
|
||||
mut controls: ResMut<Controls>,
|
||||
mut cam: Query<&mut CameraRotation>,
|
||||
movement: Res<PlayerMovement>,
|
||||
@@ -105,6 +105,7 @@ fn rotate_view(
|
||||
if movement.any_direction {
|
||||
cam.0 = 0.;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -112,3 +113,25 @@ fn rotate_view(
|
||||
|
||||
controls.keyboard_state.look_dir = Vec2::ZERO;
|
||||
}
|
||||
|
||||
fn rotate_view_gamepad(
|
||||
controls: Res<Controls>,
|
||||
mut cam: Query<&mut CameraRotation>,
|
||||
movement: Res<PlayerMovement>,
|
||||
) {
|
||||
let Ok(mut cam) = cam.get_single_mut() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let Some(gamepad) = controls.gamepad_state else {
|
||||
return;
|
||||
};
|
||||
|
||||
if !gamepad.view_mode {
|
||||
if movement.any_direction {
|
||||
cam.0 = 0.;
|
||||
}
|
||||
} else {
|
||||
cam.0 += gamepad.look_dir.x * -0.001;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user