generated from 2ndbeam/bevy-template
feat: Player, assets and basic movement
This commit is contained in:
parent
975e065fde
commit
10afe6fd08
22 changed files with 87 additions and 55 deletions
41
src/player.rs
Normal file
41
src/player.rs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct Player {
|
||||
// px/s
|
||||
speed: f32,
|
||||
}
|
||||
|
||||
fn player_bundle(asset_server: &Res<AssetServer>) -> impl Bundle {
|
||||
let image = asset_server.load("sprites/player/player.png");
|
||||
(
|
||||
Player {
|
||||
speed: 51.2,
|
||||
},
|
||||
Sprite::from_image(image),
|
||||
Transform::from_xyz(0f32, 0f32, 1f32),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn setup_player(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
commands.spawn(player_bundle(&asset_server));
|
||||
}
|
||||
|
||||
pub fn handle_input(
|
||||
key_input: Res<ButtonInput<KeyCode>>,
|
||||
time: Res<Time>,
|
||||
player: Query<(&Player, &mut Transform, &mut Sprite)>,
|
||||
) {
|
||||
let exclusive_pressed = key_input.pressed(KeyCode::KeyA) != key_input.pressed(KeyCode::KeyD);
|
||||
let direction = if !exclusive_pressed { 0f32 }
|
||||
else if key_input.pressed(KeyCode::KeyA) { -1f32 }
|
||||
else if key_input.pressed(KeyCode::KeyD) { 1f32 }
|
||||
else { unreachable!() };
|
||||
|
||||
for (Player {speed}, mut transform, mut sprite) in player {
|
||||
transform.translation.x += direction * speed * time.delta_secs();
|
||||
if direction != 0f32 {
|
||||
sprite.flip_x = direction < 0f32;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue