Make camera move with player

This commit is contained in:
Paul Brinkmeier 2022-02-20 15:47:23 +01:00
parent ba8cc16782
commit b21065a3ed

View File

@ -5,6 +5,7 @@ use bevy::input::system::exit_on_esc_system;
use bevy::input::Input; use bevy::input::Input;
use bevy::math::Vec3; use bevy::math::Vec3;
use bevy::prelude::*; use bevy::prelude::*;
use bevy::render::primitives::Frustum;
use bevy::sprite::{Sprite, SpriteBundle}; use bevy::sprite::{Sprite, SpriteBundle};
use bevy::text::Text; use bevy::text::Text;
use bevy::window::Windows; use bevy::window::Windows;
@ -264,8 +265,11 @@ fn expiration_date_system(
fn arnold_movement_system( fn arnold_movement_system(
keyboard_input: Res<Input<KeyCode>>, keyboard_input: Res<Input<KeyCode>>,
mut query: Query<(&mut Arnold, &mut Sprite, &mut Transform)>, mut query: Query<(&mut Arnold, &mut Sprite, &mut Transform), Without<Camera>>,
// Hack to get exactly the right camera (the one for the given 2d scene, not the UI one)
mut cam_query: Query<(&Camera, &mut Transform), With<Frustum>>,
) { ) {
let (_cam, mut cam_transform) = cam_query.single_mut();
let (mut arnold, mut sprite, mut transform) = query.single_mut(); let (mut arnold, mut sprite, mut transform) = query.single_mut();
let mut velocity = Vec3::new(0.0, 0.0, 0.0); let mut velocity = Vec3::new(0.0, 0.0, 0.0);
@ -293,6 +297,7 @@ fn arnold_movement_system(
} }
transform.translation += velocity; transform.translation += velocity;
cam_transform.translation += velocity;
} }
fn arnold_attack_system( fn arnold_attack_system(
@ -332,6 +337,7 @@ fn enemy_spawner_system(
windows: Res<Windows>, windows: Res<Windows>,
time: Res<Time>, time: Res<Time>,
mut query: Query<&mut EnemySpawner>, mut query: Query<&mut EnemySpawner>,
query_player: Query<&Transform, With<Arnold>>,
) { ) {
let mut enemy_spawner = query.single_mut(); let mut enemy_spawner = query.single_mut();
@ -349,7 +355,8 @@ fn enemy_spawner_system(
.spawn_bundle(SpriteBundle { .spawn_bundle(SpriteBundle {
texture: assets.load("monster.png"), texture: assets.load("monster.png"),
transform: Transform { transform: Transform {
translation: Vec3::new(phi.cos() * spawn_distance, phi.sin() * spawn_distance, 0.0), translation: query_player.single().translation
+ Vec3::new(phi.cos() * spawn_distance, phi.sin() * spawn_distance, 0.0),
..Default::default() ..Default::default()
}, },
..Default::default() ..Default::default()