Add statues to confirm camera is working

This commit is contained in:
Daniel Flanagan 2023-12-23 16:50:08 -06:00
parent 9af299544f
commit 781d8da5de
Signed by: lytedev
GPG key ID: 5B2020A0F9921EF4
5 changed files with 68 additions and 4 deletions

View file

@ -8,6 +8,7 @@ pub struct AssetLoader {
#[derive(Resource, Debug, Default)] #[derive(Resource, Debug, Default)]
pub struct Sprites { pub struct Sprites {
pub player: Handle<TextureAtlas>, pub player: Handle<TextureAtlas>,
pub statue: Handle<TextureAtlas>,
} }
pub struct AssetPlugin; pub struct AssetPlugin;
@ -25,6 +26,8 @@ fn load_assets(
mut texture_atlases: ResMut<Assets<TextureAtlas>>, mut texture_atlases: ResMut<Assets<TextureAtlas>>,
) { ) {
let player_img = asset_server.load("img/Player.png"); let player_img = asset_server.load("img/Player.png");
let props_img = asset_server.load("img/Props.png");
let player_atlas = TextureAtlas::from_grid( let player_atlas = TextureAtlas::from_grid(
player_img, player_img,
Vec2::new(32.0, 64.0), Vec2::new(32.0, 64.0),
@ -33,10 +36,22 @@ fn load_assets(
Some(Vec2 { x: 0., y: 0. }), Some(Vec2 { x: 0., y: 0. }),
Some(Vec2 { x: 0., y: 0. }), Some(Vec2 { x: 0., y: 0. }),
); );
let statue_atlas = TextureAtlas::from_grid(
props_img,
Vec2::new(40., 74.),
1,
1,
None,
Some(Vec2::new(443., 20.)),
);
let player_atlas_handle = texture_atlases.add(player_atlas); let player_atlas_handle = texture_atlases.add(player_atlas);
let statue_atlas_handle = texture_atlases.add(statue_atlas);
*assets = AssetLoader { *assets = AssetLoader {
sprites: Sprites { sprites: Sprites {
player: player_atlas_handle, player: player_atlas_handle,
statue: statue_atlas_handle,
}, },
}; };
} }

View file

@ -1,15 +1,30 @@
use bevy::prelude::*; use bevy::prelude::*;
use crate::player;
pub struct Camera; pub struct Camera;
impl Plugin for Camera { impl Plugin for Camera {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.add_systems(Startup, spawn_camera); app.add_systems(Startup, spawn)
.add_systems(PostUpdate, focus);
} }
} }
fn spawn_camera(mut commands: Commands) { fn spawn(mut commands: Commands) {
let mut bundle = Camera2dBundle::default(); let mut bundle = Camera2dBundle::default();
bundle.projection.scale = 1.; bundle.projection.scale = 0.25;
commands.spawn(bundle); commands.spawn(bundle);
} }
fn focus(
player: Query<&Transform, With<player::Player>>,
mut camera: Query<
&mut Transform,
(With<bevy::render::camera::Camera>, Without<player::Player>),
>,
) {
let ply = player.single();
let mut camt = camera.single_mut();
camt.translation = ply.translation
}

View file

@ -4,6 +4,7 @@ mod assets;
mod camera; mod camera;
mod movement; mod movement;
mod player; mod player;
mod statue;
fn main() { fn main() {
let mut app = App::new(); let mut app = App::new();
@ -20,6 +21,7 @@ fn main() {
.set(ImagePlugin::default_nearest()), .set(ImagePlugin::default_nearest()),
) )
.add_plugins(( .add_plugins((
statue::Statue,
camera::Camera, camera::Camera,
assets::AssetPlugin, assets::AssetPlugin,
player::Player, player::Player,

View file

@ -23,7 +23,6 @@ fn spawn_player(mut commands: Commands, assets: Res<AssetLoader>) {
SpriteSheetBundle { SpriteSheetBundle {
texture_atlas: assets.sprites.player.clone(), texture_atlas: assets.sprites.player.clone(),
sprite: TextureAtlasSprite::new(0), sprite: TextureAtlasSprite::new(0),
transform: Transform::from_scale(Vec3::splat(3.0)),
..Default::default() ..Default::default()
}, },
Mover { Mover {

33
src/statue.rs Normal file
View file

@ -0,0 +1,33 @@
use bevy::prelude::*;
use crate::assets::AssetLoader;
#[derive(Component, Debug)]
pub struct Statue;
impl Plugin for Statue {
fn build(&self, app: &mut App) {
app.add_systems(PostStartup, spawn_statue);
}
}
fn spawn_statue(mut commands: Commands, assets: Res<AssetLoader>) {
commands.spawn((
Statue,
SpriteSheetBundle {
texture_atlas: assets.sprites.statue.clone(),
sprite: TextureAtlasSprite::new(0),
transform: Transform::from_translation(Vec3::new(50., 50., 0.)),
..Default::default()
},
));
commands.spawn((
Statue,
SpriteSheetBundle {
texture_atlas: assets.sprites.statue.clone(),
sprite: TextureAtlasSprite::new(0),
transform: Transform::from_translation(Vec3::new(50., 100., 0.)),
..Default::default()
},
));
}