feat: have the attack projectile actually use the attack's velocity

This commit is contained in:
Muhammad Nauman Raza 2024-05-29 09:33:59 +01:00
parent c2d3fe5660
commit 75ff76273b
Signed by: devraza
GPG key ID: 91EAD6081011574B
2 changed files with 27 additions and 30 deletions

View file

@ -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,
), ),

View file

@ -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;
}
} }
} }