feat: have the attack projectile actually use the attack's velocity
This commit is contained in:
parent
4221370f2d
commit
96ccdcfc20
|
@ -66,6 +66,7 @@ fn main() {
|
||||||
player_movement,
|
player_movement,
|
||||||
player_regen,
|
player_regen,
|
||||||
player_attack,
|
player_attack,
|
||||||
|
attack_movement,
|
||||||
enemy_movement,
|
enemy_movement,
|
||||||
change_enemy_color,
|
change_enemy_color,
|
||||||
),
|
),
|
||||||
|
|
|
@ -78,43 +78,39 @@ pub fn player_movement(
|
||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
pub fn player_attack(
|
pub fn player_attack(
|
||||||
keys: Res<ButtonInput<KeyCode>>,
|
keys: Res<ButtonInput<KeyCode>>,
|
||||||
mut set: ParamSet<(
|
mut player_query: Query<(&Transform, &mut Player), With<Player>>,
|
||||||
Query<&mut Transform, With<Attack>>,
|
|
||||||
Query<&Transform, With<Player>>,
|
|
||||||
)>,
|
|
||||||
mut player_query: Query<&mut Player>,
|
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
asset_server: Res<AssetServer>,
|
asset_server: Res<AssetServer>,
|
||||||
) {
|
) {
|
||||||
let mut player = player_query.single_mut();
|
let (transform, mut player) = player_query.single_mut();
|
||||||
|
let attack_position = transform.translation + (transform.rotation * Vec3::Y * 100.);
|
||||||
|
|
||||||
for player_transform in set.p1().iter_mut() {
|
if keys.just_pressed(KeyCode::Enter) {
|
||||||
let attack_position =
|
commands
|
||||||
player_transform.translation + (player_transform.rotation * Vec3::Y * 100.);
|
.spawn(SpriteBundle {
|
||||||
|
texture: asset_server.load("attacks/stone_cannon.png"),
|
||||||
|
transform: Transform {
|
||||||
|
scale: Vec3::splat(0.3),
|
||||||
|
translation: attack_position,
|
||||||
|
rotation: transform.rotation,
|
||||||
|
},
|
||||||
|
..default()
|
||||||
|
})
|
||||||
|
.insert(Attack {
|
||||||
|
velocity: 20.,
|
||||||
|
damage: 20.,
|
||||||
|
});
|
||||||
|
|
||||||
if keys.just_pressed(KeyCode::Enter) {
|
player.mana -= 1.;
|
||||||
commands
|
|
||||||
.spawn(SpriteBundle {
|
|
||||||
texture: asset_server.load("attacks/stone_cannon.png"),
|
|
||||||
transform: Transform {
|
|
||||||
scale: Vec3::splat(0.3),
|
|
||||||
translation: attack_position,
|
|
||||||
rotation: player_transform.rotation,
|
|
||||||
},
|
|
||||||
..default()
|
|
||||||
})
|
|
||||||
.insert(Attack {
|
|
||||||
velocity: 10.,
|
|
||||||
damage: 20.,
|
|
||||||
});
|
|
||||||
|
|
||||||
player.mana -= 1.;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for mut attack_transform in set.p0().iter_mut() {
|
pub fn attack_movement(mut attack_query: Query<(&mut Transform, Option<&Attack>), With<Attack>>) {
|
||||||
let direction = attack_transform.rotation * Vec3::Y;
|
for (mut transform, attack) in attack_query.iter_mut() {
|
||||||
attack_transform.translation += direction * 20.;
|
if let Some(attack) = attack {
|
||||||
|
let direction = transform.rotation * Vec3::Y;
|
||||||
|
transform.translation += direction * attack.velocity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue