diff --git a/src/main.rs b/src/main.rs index 23dbbd9..6518a35 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use bevy::prelude::*; +use bevy::{prelude::*, render::{camera::Camera, render_graph::base::camera::CAMERA_2D}}; #[derive(Default, Debug)] struct Player { @@ -11,8 +11,7 @@ struct Player { struct GameState { player: Player, score: u32, - camera_should_focus: Vec3, - camera_is_focused: Vec3, + camera_focus: Vec3 } fn main() { @@ -21,6 +20,7 @@ fn main() { .add_plugins(DefaultPlugins) .add_startup_system(setup.system()) .add_system(movement.system()) + .add_system(focus_camera.system()) .run(); } @@ -117,3 +117,17 @@ fn movement( } } } + +fn focus_camera(mut game: ResMut, mut transforms: QuerySet<(Query<(&mut Transform, &Camera)>, Query<&Transform>)>) { + if let Some(player_entity) = game.player.entity { + if let Ok(player_transform) = transforms.q1().get(player_entity) { + game.camera_focus = player_transform.translation; + } + } + + for (mut transform, camera) in transforms.q0_mut().iter_mut() { + if camera.name == Some(CAMERA_2D.to_string()) { + *transform.translation = *game.camera_focus; + } + } +} \ No newline at end of file