Focus camera on player
This commit is contained in:
parent
ca4a634704
commit
798f2d491b
20
src/main.rs
20
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<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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue