hotfix: camera jitter due to out of sync updating
This commit is contained in:
parent
bd6b29c74c
commit
10f125539a
|
@ -61,7 +61,7 @@ fn main() {
|
||||||
.add_systems(Startup, (setup, setup_ui))
|
.add_systems(Startup, (setup, setup_ui))
|
||||||
.add_systems(
|
.add_systems(
|
||||||
Update,
|
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();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ pub fn player_movement(
|
||||||
time: Res<Time>,
|
time: Res<Time>,
|
||||||
keys: Res<ButtonInput<KeyCode>>,
|
keys: Res<ButtonInput<KeyCode>>,
|
||||||
mut player_query: Query<(&mut Player, &mut Transform), With<Player>>,
|
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();
|
let (mut player, mut transform) = player_query.single_mut();
|
||||||
|
|
||||||
|
@ -66,6 +67,8 @@ pub fn player_movement(
|
||||||
|
|
||||||
// Update the player translation with the translation
|
// Update the player translation with the translation
|
||||||
transform.translation += movement_direction * movement_distance;
|
transform.translation += movement_direction * movement_distance;
|
||||||
|
|
||||||
|
camera_follow(camera_query, transform.translation.x, transform.translation.y)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
|
@ -113,16 +116,14 @@ pub fn player_attack(
|
||||||
|
|
||||||
// Function to make the camera follow the plaeyr
|
// Function to make the camera follow the plaeyr
|
||||||
pub fn camera_follow(
|
pub fn camera_follow(
|
||||||
mut player: Query<(&Player, &mut Transform)>,
|
mut camera_query: Query<&mut Transform, (Without<Player>, With<Camera>)>,
|
||||||
mut cameras: Query<&mut Transform, (With<Camera>, Without<Player>)>,
|
player_x: f32,
|
||||||
|
player_y: f32,
|
||||||
) {
|
) {
|
||||||
let (_, transform) = player.single_mut();
|
let mut camera_transform = camera_query.single_mut();
|
||||||
let pos = transform.translation;
|
|
||||||
|
|
||||||
for mut camera_transform in &mut cameras {
|
camera_transform.translation.x = player_x;
|
||||||
camera_transform.translation.x = pos.x;
|
camera_transform.translation.y = player_y;
|
||||||
camera_transform.translation.y = pos.y;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn player_regen(mut player_query: Query<&mut Player, With<Player>>, time: Res<Time>) {
|
pub fn player_regen(mut player_query: Query<&mut Player, With<Player>>, time: Res<Time>) {
|
||||||
|
|
Reference in a new issue