Add bullet/laser sound
Firing the weapon now makes a sound. I've implemented this by spawning the playback component on the bullet rather than the gun. This seemed easier than figuring out how to reset a playback component that lives on the ship entity -- although thats probably better for memory access patterns.
This commit is contained in:
BIN
assets/laserSmall_001.ogg
Normal file
BIN
assets/laserSmall_001.ogg
Normal file
Binary file not shown.
@@ -199,6 +199,8 @@ fn input_ship_shoot(
|
|||||||
MeshMaterial2d(game_assets.bullet().1),
|
MeshMaterial2d(game_assets.bullet().1),
|
||||||
ship_pos.clone(), // clone ship transform
|
ship_pos.clone(), // clone ship transform
|
||||||
Lifetime(Timer::from_seconds(BULLET_LIFETIME, TimerMode::Once)),
|
Lifetime(Timer::from_seconds(BULLET_LIFETIME, TimerMode::Once)),
|
||||||
|
AudioPlayer::new(game_assets.laser_sound()),
|
||||||
|
PlaybackSettings::ONCE, // `Lifetime` already despawns the entity, so this doesn't need to
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ impl Default for WorldSize {
|
|||||||
pub struct GameAssets {
|
pub struct GameAssets {
|
||||||
meshes: [Handle<Mesh>; 5],
|
meshes: [Handle<Mesh>; 5],
|
||||||
materials: [Handle<ColorMaterial>; 7],
|
materials: [Handle<ColorMaterial>; 7],
|
||||||
sounds: [Handle<AudioSource>; 1],
|
sounds: [Handle<AudioSource>; 2],
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GameAssets {
|
impl GameAssets {
|
||||||
@@ -101,6 +101,10 @@ impl GameAssets {
|
|||||||
pub fn wreck_sound(&self) -> Handle<AudioSource> {
|
pub fn wreck_sound(&self) -> Handle<AudioSource> {
|
||||||
self.sounds[0].clone()
|
self.sounds[0].clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn laser_sound(&self) -> Handle<AudioSource> {
|
||||||
|
self.sounds[1].clone()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FromWorld for GameAssets {
|
impl FromWorld for GameAssets {
|
||||||
@@ -129,7 +133,10 @@ impl FromWorld for GameAssets {
|
|||||||
world_materials.add(BULLET_COLOR),
|
world_materials.add(BULLET_COLOR),
|
||||||
];
|
];
|
||||||
let loader = world.resource_mut::<AssetServer>();
|
let loader = world.resource_mut::<AssetServer>();
|
||||||
let sounds = [loader.load("explosionCrunch_004.ogg")];
|
let sounds = [
|
||||||
|
loader.load("explosionCrunch_004.ogg"),
|
||||||
|
loader.load("laserSmall_001.ogg")
|
||||||
|
];
|
||||||
GameAssets {
|
GameAssets {
|
||||||
meshes,
|
meshes,
|
||||||
materials,
|
materials,
|
||||||
|
|||||||
Reference in New Issue
Block a user