simple hitpoint mechanic
This commit is contained in:
13
src/aim.rs
13
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<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.);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user