Fuck dat dawg istg -3hrs thinking it wouldn't be that impactful
This commit is contained in:
43
src/camera.rs
Normal file
43
src/camera.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
use bevy::prelude::*;
|
||||
|
||||
use crate::player::Player;
|
||||
|
||||
pub struct CameraPlugin;
|
||||
|
||||
impl Plugin for CameraPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_systems(
|
||||
Startup,
|
||||
(spawn_camera, move_camera)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn spawn_camera(mut commands: Commands) {
|
||||
let mut camera = Camera2dBundle::default();
|
||||
camera.projection.scale = 0.5;
|
||||
camera.transform.translation.x += 1280.0 / 4.0;
|
||||
camera.transform.translation.y += 720.0 / 4.0;
|
||||
commands.spawn(camera);
|
||||
}
|
||||
|
||||
fn move_camera(
|
||||
mut camera: Query<&mut Transform, (With<Camera2d>, Without<Player>)>,
|
||||
player: Query<&Transform, (With<Player>, Without<Camera2d>)>,
|
||||
time: Res<Time>,
|
||||
) {
|
||||
let Ok(mut camera) = camera.get_single_mut() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let Ok(player) = player.get_single() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let Vec3 { x, y, .. } = player.translation;
|
||||
let direction = Vec3::new(x, y, camera.translation.z);
|
||||
|
||||
camera.translation = camera
|
||||
.translation
|
||||
.lerp(direction, time.delta_seconds() * 2.);
|
||||
}
|
||||
13
src/main.rs
13
src/main.rs
@@ -1,30 +1,27 @@
|
||||
use bevy::prelude::*;
|
||||
use bevy_ecs_ldtk::prelude::*;
|
||||
use player::{Player, PlayerPlugin};
|
||||
use camera::CameraPlugin;
|
||||
|
||||
mod player;
|
||||
mod camera;
|
||||
|
||||
fn main() {
|
||||
App::new()
|
||||
.add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest()))
|
||||
.add_plugins(LdtkPlugin)
|
||||
.add_plugins(PlayerPlugin)
|
||||
.add_systems(Update, (translate_grid_coords_entities, check_goal))
|
||||
.insert_resource(LevelSelection::index(0))
|
||||
.register_ldtk_entity::<GoalBundle>("Goal")
|
||||
.register_ldtk_int_cell::<WallBundle>(1)
|
||||
.add_systems(Startup, setup)
|
||||
.add_plugins(CameraPlugin)
|
||||
.add_systems(Update, (translate_grid_coords_entities, check_goal))
|
||||
.run();
|
||||
}
|
||||
|
||||
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
let mut camera = Camera2dBundle::default();
|
||||
camera.projection.scale = 0.5;
|
||||
camera.transform.translation.x += 1280.0 / 4.0;
|
||||
camera.transform.translation.y += 720.0 / 4.0;
|
||||
commands.spawn(camera);
|
||||
|
||||
commands.spawn(LdtkWorldBundle {
|
||||
commands.spawn(LdtkWorldBundle {
|
||||
ldtk_handle: asset_server.load("shocked-miguel.ldtk"),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user