Focus camera on player

This commit is contained in:
Yash Karandikar 2022-01-02 19:08:55 -06:00
parent ca4a634704
commit 798f2d491b
Signed by: karx
GPG key ID: A794DA2529474BA5

View file

@ -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<GameState>, 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;
}
}
}