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

View File

@@ -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<Entity>,
pub range: f32,
pub angle: f32,
@@ -37,7 +38,7 @@ enum MarkerEvent {
pub fn plugin(app: &mut App) {
app.init_resource::<AimState>();
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<Marker>>, time: Res<Time>) {
for mut transform in query.iter_mut() {
transform.translation = Vec3::new(0., 3. + (sin(time.elapsed_secs() * 6.) * 0.2), 0.);
}
}