feat: fishing

This commit is contained in:
Ahmet Kaan Gümüş 2025-02-16 01:23:41 +03:00
parent c7e17a7c1d
commit cca4b205f5
2 changed files with 27 additions and 6 deletions

View file

@ -12,6 +12,7 @@ mod water;
pub const CHARACTER_SPEED: f32 = 300.0;
pub const CAMERA_DECAY_RATE: f32 = 3.0;
pub const FISHING_AREA_RADIUS: f32 = 100.0;
pub fn start_game() {
App::new()
@ -20,6 +21,6 @@ pub fn start_game() {
Startup,
(setup_camera, Water::setup_water, Player::setup_player),
)
.add_systems(Update, (update_camera, Player::move_player))
.add_systems(Update, (update_camera, Player::move_player, Water::fishing))
.run();
}

View file

@ -1,15 +1,35 @@
use bevy::prelude::*;
use crate::{player::Player, FISHING_AREA_RADIUS};
#[derive(Debug, Component)]
pub struct Water;
impl Water {
pub fn setup_water(mut commands: Commands, asset_server: Res<AssetServer>) {
let image = asset_server.load::<Image>("water.png");
commands.spawn((
Sprite::from_image(image),
Transform::from_xyz(500.0, 0.0, 0.0),
Water,
));
let sprite = Sprite::from_image(image);
commands.spawn((sprite.clone(), Transform::from_xyz(500.0, 0.0, -1.0), Water));
commands.spawn((sprite, Transform::from_xyz(-500.0, 0.0, -1.0), Water));
}
pub fn fishing(
player_query: Query<&Transform, With<Player>>,
water_query: Query<&Transform, With<Water>>,
keyboard: Res<ButtonInput<KeyCode>>,
) {
let player_transform = player_query.get_single().unwrap();
for water_query in &water_query {
let distance = player_transform
.translation
.distance(water_query.translation);
if distance < FISHING_AREA_RADIUS {
if keyboard.just_pressed(KeyCode::KeyE) {
println!("You caught a fish");
}
}
}
}
}