From 8946289ac22ed708efd397fe2ef4c513bfc7bea4 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Wed, 12 Mar 2025 23:25:13 +0100 Subject: [PATCH] simple hitpoint mechanic --- assets/sfx/abilities/gun.ogg | Bin 0 -> 4199 bytes src/aim.rs | 13 ++++++++--- src/gates.rs | 44 +++++++++++++++++------------------ src/main.rs | 4 ++++ src/npc.rs | 41 ++++++++++++++++++++++++++++++++ src/player.rs | 32 +++++++++++++++++++++++-- src/shooting.rs | 31 ++++++++++++++++++++++++ src/tb_entities.rs | 4 +++- 8 files changed, 140 insertions(+), 29 deletions(-) create mode 100644 assets/sfx/abilities/gun.ogg create mode 100644 src/shooting.rs diff --git a/assets/sfx/abilities/gun.ogg b/assets/sfx/abilities/gun.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b9ed1e1d04de092f58f39857f9d945a55ce78087 GIT binary patch literal 4199 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 literal 0 HcmV?d00001 diff --git a/src/aim.rs b/src/aim.rs index 071eb5d..03d3554 100644 --- a/src/aim.rs +++ b/src/aim.rs @@ -5,11 +5,12 @@ use crate::{ }; use bevy::prelude::*; use bevy_sprite3d::{Sprite3dBuilder, Sprite3dParams}; +use ops::sin; use std::f32::consts::PI; #[derive(Resource, Reflect)] #[reflect(Resource)] -struct AimState { +pub struct AimState { pub target: Option, pub range: f32, pub angle: f32, @@ -37,7 +38,7 @@ enum MarkerEvent { pub fn plugin(app: &mut App) { app.init_resource::(); - app.add_systems(Update, update); + app.add_systems(Update, (update, move_marker)); app.add_observer(marker_event); } @@ -63,7 +64,7 @@ fn marker_event( Name::new("aim-marker"), Billboard, Marker, - Transform::from_translation(Vec3::new(0., 3., 0.)), + Transform::default(), Sprite3dBuilder { image: selector, pixels_per_metre: 30., @@ -129,3 +130,9 @@ fn update( state.target = new_target; } } + +fn move_marker(mut query: Query<&mut Transform, With>, time: Res