hotfix: camera jitter due to out of sync updating

This commit is contained in:
Muhammad Nauman Raza 2024-05-29 08:48:22 +01:00
parent bd6b29c74c
commit 10f125539a
No known key found for this signature in database
GPG key ID: B0EF3A98B29ADB1D
2 changed files with 10 additions and 9 deletions

View file

@ -61,7 +61,7 @@ fn main() {
.add_systems(Startup, (setup, setup_ui))
.add_systems(
Update,
(render_ui, player_movement, camera_follow, player_regen, player_attack, enemy_movement, change_enemy_color),
(render_ui, player_movement, player_regen, player_attack, enemy_movement, change_enemy_color),
)
.run();
}

View file

@ -26,6 +26,7 @@ pub fn player_movement(
time: Res<Time>,
keys: Res<ButtonInput<KeyCode>>,
mut player_query: Query<(&mut Player, &mut Transform), With<Player>>,
camera_query: Query<&mut Transform, (Without<Player>, With<Camera>)>,
) {
let (mut player, mut transform) = player_query.single_mut();
@ -66,6 +67,8 @@ pub fn player_movement(
// Update the player translation with the translation
transform.translation += movement_direction * movement_distance;
camera_follow(camera_query, transform.translation.x, transform.translation.y)
}
#[allow(clippy::type_complexity)]
@ -113,16 +116,14 @@ pub fn player_attack(
// Function to make the camera follow the plaeyr
pub fn camera_follow(
mut player: Query<(&Player, &mut Transform)>,
mut cameras: Query<&mut Transform, (With<Camera>, Without<Player>)>,
mut camera_query: Query<&mut Transform, (Without<Player>, With<Camera>)>,
player_x: f32,
player_y: f32,
) {
let (_, transform) = player.single_mut();
let pos = transform.translation;
let mut camera_transform = camera_query.single_mut();
for mut camera_transform in &mut cameras {
camera_transform.translation.x = pos.x;
camera_transform.translation.y = pos.y;
}
camera_transform.translation.x = player_x;
camera_transform.translation.y = player_y;
}
pub fn player_regen(mut player_query: Query<&mut Player, With<Player>>, time: Res<Time>) {