rust_fisher_game/src/player.rs

46 lines
1.2 KiB
Rust
Raw Normal View History

2025-02-16 00:29:53 +03:00
use bevy::prelude::*;
use crate::CHARACTER_SPEED;
#[derive(Debug, Component)]
2025-02-16 03:35:13 +03:00
pub struct Player {
pub fish_count: usize,
2025-02-18 16:52:59 +03:00
pub money: usize,
2025-02-16 03:35:13 +03:00
}
2025-02-16 00:29:53 +03:00
impl Player {
2025-02-16 03:35:13 +03:00
pub fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
2025-02-16 00:29:53 +03:00
let image = asset_server.load::<Image>("character.png");
commands.spawn((
Sprite::from_image(image),
Transform::from_xyz(0.0, 0.0, 0.0),
2025-02-18 16:52:59 +03:00
Player {
fish_count: 0,
money: 0,
},
2025-02-16 00:29:53 +03:00
));
}
2025-02-16 03:35:13 +03:00
pub fn r#move(
2025-02-16 00:29:53 +03:00
time: Res<Time>,
2025-02-16 03:35:13 +03:00
mut player_query: Query<&mut Transform, With<Player>>,
2025-02-16 00:29:53 +03:00
keyboard_input: Res<ButtonInput<KeyCode>>,
) {
2025-02-16 03:35:13 +03:00
let mut player = player_query.get_single_mut().unwrap();
2025-02-16 00:29:53 +03:00
let translation = CHARACTER_SPEED * time.delta_secs();
if keyboard_input.pressed(KeyCode::KeyW) {
2025-02-16 03:35:13 +03:00
player.translation.y += translation;
2025-02-16 00:29:53 +03:00
}
if keyboard_input.pressed(KeyCode::KeyS) {
2025-02-16 03:35:13 +03:00
player.translation.y -= translation;
2025-02-16 00:29:53 +03:00
}
if keyboard_input.pressed(KeyCode::KeyA) {
2025-02-16 03:35:13 +03:00
player.translation.x -= translation;
2025-02-16 00:29:53 +03:00
}
if keyboard_input.pressed(KeyCode::KeyD) {
2025-02-16 03:35:13 +03:00
player.translation.x += translation;
2025-02-16 00:29:53 +03:00
}
}
}