feat: basic attacks
This commit is contained in:
parent
5d8eb93b32
commit
b8f1849d7a
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -129,7 +129,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ambition"
|
||||
version = "0.1.0"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"bevy",
|
||||
"bevy_egui",
|
||||
|
|
12
flake.lock
12
flake.lock
|
@ -8,11 +8,11 @@
|
|||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710397340,
|
||||
"narHash": "sha256-cetHTP4c7eILb1v5nD0HO4Nev1egEDuqo8OOk90khYg=",
|
||||
"lastModified": 1710483719,
|
||||
"narHash": "sha256-Ev/hJ59IAA3dWfTB3CWxMv/V/owO1yKyq0nwsek/d9o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "80409698f025fcbf931d9bd7a6a07a3a06356271",
|
||||
"rev": "d0439c495e5cd13ff252ade520ca620f52abb40b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -97,11 +97,11 @@
|
|||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1710319630,
|
||||
"narHash": "sha256-2PO3d37euWrUTFofT/Edji+zorOgfiIrMKqhuq3ffHU=",
|
||||
"lastModified": 1710430493,
|
||||
"narHash": "sha256-KfmUsf/d62ANcFhSTR3BDIpk2ww0AcxXdi9lpZJ5UtQ=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "e8182a5bb32ca5763fd817661447f75138fb3883",
|
||||
"rev": "14558af15ee3d471bf8f4212f7609ae1f9647bc5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -55,7 +55,7 @@ fn main() {
|
|||
.init_resource::<UiState>()
|
||||
.init_resource::<OpenWindows>()
|
||||
.add_systems(Startup, (setup, setup_ui))
|
||||
.add_systems(Update, (render_ui, movement, camera_follow, player_regen))
|
||||
.add_systems(Update, (render_ui, movement, camera_follow, player_regen, attack))
|
||||
.run();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,13 @@ pub struct Player {
|
|||
pub stamina_max: f32,
|
||||
}
|
||||
|
||||
// Define the attacking component
|
||||
#[derive(Component)]
|
||||
pub struct Attack {
|
||||
pub velocity: f32,
|
||||
pub damage: f32,
|
||||
}
|
||||
|
||||
// Define the player movement system
|
||||
pub fn movement(
|
||||
time: Res<Time>,
|
||||
|
@ -46,22 +53,6 @@ pub fn movement(
|
|||
movement_distance = 256.;
|
||||
}
|
||||
|
||||
if keys.pressed(KeyCode::ArrowLeft) {
|
||||
transform.rotation = Quat::from_rotation_z((90_f32).to_radians());
|
||||
movement_factor = 1.;
|
||||
} else if keys.pressed(KeyCode::ArrowRight) {
|
||||
transform.rotation = Quat::from_rotation_z((270_f32).to_radians());
|
||||
movement_factor = 1.;
|
||||
}
|
||||
|
||||
if keys.pressed(KeyCode::ArrowUp) {
|
||||
transform.rotation = Quat::from_rotation_z((0_f32).to_radians());
|
||||
movement_factor = 1.;
|
||||
} else if keys.pressed(KeyCode::ArrowDown) {
|
||||
transform.rotation = Quat::from_rotation_z((180_f32).to_radians());
|
||||
movement_factor = 1.;
|
||||
}
|
||||
|
||||
// Get the player's *forward* vector
|
||||
let movement_direction = transform.rotation * Vec3::Y;
|
||||
|
||||
|
@ -75,6 +66,40 @@ pub fn movement(
|
|||
transform.translation += movement_direction * movement_distance;
|
||||
}
|
||||
|
||||
pub fn attack(
|
||||
keys: Res<ButtonInput<KeyCode>>,
|
||||
mut set: ParamSet<(
|
||||
Query<&mut Transform, With<Attack>>,
|
||||
Query<&Transform, With<Player>>
|
||||
)>,
|
||||
mut commands: Commands,
|
||||
asset_server: Res<AssetServer>,
|
||||
) {
|
||||
for player_transform in set.p1().iter_mut() {
|
||||
if keys.just_pressed(KeyCode::Enter) {
|
||||
commands
|
||||
.spawn(SpriteBundle {
|
||||
texture: asset_server.load("player/player-4x.png"),
|
||||
transform: Transform {
|
||||
scale: Vec3::splat(0.1),
|
||||
translation: player_transform.translation,
|
||||
rotation: player_transform.rotation,
|
||||
},
|
||||
..default()
|
||||
})
|
||||
.insert(Attack {
|
||||
velocity: 10.,
|
||||
damage: 20.,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
for mut attack_transform in set.p0().iter_mut() {
|
||||
let direction = attack_transform.rotation * Vec3::Y;
|
||||
attack_transform.translation += direction * 10.;
|
||||
}
|
||||
}
|
||||
|
||||
// Function to make the camera follow the plaeyr
|
||||
pub fn camera_follow(
|
||||
mut player: Query<(&Player, &mut Transform)>,
|
||||
|
|
Reference in a new issue