diff --git a/assets/explosionCrunch_000.ogg b/assets/explosionCrunch_000.ogg new file mode 100644 index 0000000..019e536 Binary files /dev/null and b/assets/explosionCrunch_000.ogg differ diff --git a/src/objects.rs b/src/objects.rs index 3a91dec..6d9fcd2 100644 --- a/src/objects.rs +++ b/src/objects.rs @@ -115,6 +115,7 @@ pub fn split_asteroids( mut respawn_events: MessageWriter, mut commands: Commands, query: Query<(&Transform, &Asteroid, &Velocity)>, + game_assets: Res, ) { for event in destroy_events.read() { if let Ok((transform, rock, velocity)) = query.get(event.0) { @@ -137,6 +138,12 @@ pub fn split_asteroids( // Always despawn the asteroid. New ones (may) be spawned in it's // place, but this one is gone. commands.entity(event.0).despawn(); + + // Play a sound for the asteroid exploding + commands.spawn(( + AudioPlayer::new(game_assets.asteroid_crack_sound()), + PlaybackSettings::DESPAWN, + )); } } } diff --git a/src/resources.rs b/src/resources.rs index 4620298..251d14d 100644 --- a/src/resources.rs +++ b/src/resources.rs @@ -58,7 +58,7 @@ impl Default for WorldSize { pub struct GameAssets { meshes: [Handle; 5], materials: [Handle; 7], - sounds: [Handle; 2], + sounds: [Handle; 3], } impl GameAssets { @@ -105,6 +105,10 @@ impl GameAssets { pub fn laser_sound(&self) -> Handle { self.sounds[1].clone() } + + pub fn asteroid_crack_sound(&self) -> Handle { + self.sounds[2].clone() + } } impl FromWorld for GameAssets { @@ -135,7 +139,8 @@ impl FromWorld for GameAssets { let loader = world.resource_mut::(); let sounds = [ loader.load("explosionCrunch_004.ogg"), - loader.load("laserSmall_001.ogg") + loader.load("laserSmall_001.ogg"), + loader.load("explosionCrunch_000.ogg"), ]; GameAssets { meshes,