simple hitpoint mechanic

This commit is contained in:
2025-03-12 23:25:13 +01:00
parent 709c1762bd
commit 8946289ac2
8 changed files with 140 additions and 29 deletions

31
src/shooting.rs Normal file
View File

@@ -0,0 +1,31 @@
use bevy::prelude::*;
use crate::{aim::AimState, npc::Hit};
#[derive(Event, Reflect)]
pub enum TriggerState {
Active,
Inactive,
}
pub fn plugin(app: &mut App) {
app.add_observer(on_trigger_state);
}
fn on_trigger_state(
trigger: Trigger<TriggerState>,
mut commands: Commands,
asset_server: Res<AssetServer>,
aim: Res<AimState>,
) {
if matches!(trigger.event(), TriggerState::Active) {
commands.spawn((
AudioPlayer::new(asset_server.load("sfx/abilities/gun.ogg")),
PlaybackSettings::DESPAWN,
));
if let Some(target) = aim.target {
commands.entity(target).trigger(Hit { damage: 20 });
}
}
}