feat: ✨ fishing
This commit is contained in:
parent
c7e17a7c1d
commit
cca4b205f5
2 changed files with 27 additions and 6 deletions
|
@ -12,6 +12,7 @@ mod water;
|
||||||
|
|
||||||
pub const CHARACTER_SPEED: f32 = 300.0;
|
pub const CHARACTER_SPEED: f32 = 300.0;
|
||||||
pub const CAMERA_DECAY_RATE: f32 = 3.0;
|
pub const CAMERA_DECAY_RATE: f32 = 3.0;
|
||||||
|
pub const FISHING_AREA_RADIUS: f32 = 100.0;
|
||||||
|
|
||||||
pub fn start_game() {
|
pub fn start_game() {
|
||||||
App::new()
|
App::new()
|
||||||
|
@ -20,6 +21,6 @@ pub fn start_game() {
|
||||||
Startup,
|
Startup,
|
||||||
(setup_camera, Water::setup_water, Player::setup_player),
|
(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();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
30
src/water.rs
30
src/water.rs
|
@ -1,15 +1,35 @@
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
use crate::{player::Player, FISHING_AREA_RADIUS};
|
||||||
|
|
||||||
#[derive(Debug, Component)]
|
#[derive(Debug, Component)]
|
||||||
pub struct Water;
|
pub struct Water;
|
||||||
|
|
||||||
impl Water {
|
impl Water {
|
||||||
pub fn setup_water(mut commands: Commands, asset_server: Res<AssetServer>) {
|
pub fn setup_water(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||||
let image = asset_server.load::<Image>("water.png");
|
let image = asset_server.load::<Image>("water.png");
|
||||||
commands.spawn((
|
let sprite = Sprite::from_image(image);
|
||||||
Sprite::from_image(image),
|
commands.spawn((sprite.clone(), Transform::from_xyz(500.0, 0.0, -1.0), Water));
|
||||||
Transform::from_xyz(500.0, 0.0, 0.0),
|
commands.spawn((sprite, Transform::from_xyz(-500.0, 0.0, -1.0), Water));
|
||||||
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue