--- id: GAL-48 title: Add sound effects status: Todo parent: GAL-46 labels: [polish, audio] --- # GAL-48: Add sound effects (shooting, explosions, player death, tractor beam, etc.) Add sound effects (shooting, explosions, player death, tractor beam, etc.). ## Acceptance criteria - [ ] Distinct SFX for: player shoot, enemy shoot, enemy explosion, player death, tractor beam start, stage clear. - [ ] SFX triggered via Bevy events (e.g. `EventWriter`), not direct calls scattered through gameplay systems. - [ ] No duplicate playback in a single frame for a single source (e.g. one shot = one click). - [ ] SFX volume independent from music channel (see GAL-49). - [ ] Asset paths centralised so re-skinning is local to one file. ## Integration test hints - Tick world: simulate shoot input → assert exactly one `PlaySfx(Shoot)` event emitted that frame. - Despawn an enemy via a bullet collision → assert exactly one `PlaySfx(Explosion)` event. - Activate a Boss `CaptureBeam` (insert `TractorBeam` component) → assert one `PlaySfx(BeamStart)` event per beam, not per frame the beam exists.