From c390a18ae50b9835f2d35b1217be6670fc20e2f5 Mon Sep 17 00:00:00 2001 From: hut Date: Fri, 29 Mar 2024 16:58:42 +0100 Subject: [PATCH] add crash sound on collision --- README.md | 1 + assets/sounds/crash.ogg | Bin 0 -> 13008 bytes src/actor.rs | 16 ++++++++++++++++ src/audio.rs | 7 +++++++ src/camera.rs | 9 ++++++++- 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 assets/sounds/crash.ogg diff --git a/README.md b/README.md index e63ec11..fcaaf3d 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ More information here: https://bevy-cheatbook.github.io/setup/cross/linux-window - https://pixabay.com/sound-effects/electricity-6353 - https://pixabay.com/sound-effects/ducati-696-monster-33217 - https://pixabay.com/sound-effects/high-energy-humming-195612 +- https://pixabay.com/sound-effects/box-crash-106687 - Music: [Dead Space Style Ambient Music](https://pixabay.com/music/ambient-dead-space-style-ambient-music-184793) by [Sharvarian](https://www.fiverr.com/sharvarian) - Star chart based on the [HYG Stellar database](https://github.com/astronexus/HYG-Database) - Custom font Yupiter is based on: diff --git a/assets/sounds/crash.ogg b/assets/sounds/crash.ogg new file mode 100644 index 0000000000000000000000000000000000000000..378c8afecd2ce38a6c06e8a174a52d7c920ccced GIT binary patch literal 13008 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 app.add_event::(); @@ -552,3 +554,17 @@ pub fn handle_chat_scripts( } } } + +fn handle_collisions( + mut collision_event_reader: EventReader, + mut ew_sfx: EventWriter, + q_player: Query>, +) { + if let Ok(player) = q_player.get_single() { + for Collision(contacts) in collision_event_reader.read() { + if contacts.entity1 == player || contacts.entity2 == player { + ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Crash)); + } + } + } +} diff --git a/src/audio.rs b/src/audio.rs index d582945..f3bb309 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -13,6 +13,7 @@ const ASSET_ROCKET: &str = "sounds/rocket.ogg"; const ASSET_ION: &str = "sounds/ion.ogg"; //const ASSET_WAKEUP: &str = "sounds/wakeup.ogg"; const ASSET_BIKESTART: &str = "sounds/bikestart.ogg"; +const ASSET_CRASH: &str = "sounds/crash.ogg"; pub struct AudioPlugin; impl Plugin for AudioPlugin { @@ -33,6 +34,7 @@ pub enum Sfx { Ping, Connect, EnterVehicle, + Crash, None, } @@ -49,6 +51,7 @@ pub enum Sfx { #[derive(Resource)] pub struct SoundPing(Handle); #[derive(Resource)] pub struct SoundConnect(Handle); #[derive(Resource)] pub struct SoundBikeStart(Handle); +#[derive(Resource)] pub struct SoundCrash(Handle); pub fn setup( mut commands: Commands, @@ -113,6 +116,7 @@ pub fn setup( commands.insert_resource(SoundPing(asset_server.load(ASSET_PING))); commands.insert_resource(SoundConnect(asset_server.load(ASSET_CONNECT))); commands.insert_resource(SoundBikeStart(asset_server.load(ASSET_BIKESTART))); + commands.insert_resource(SoundCrash(asset_server.load(ASSET_CRASH))); } pub fn toggle_bgm( @@ -143,6 +147,7 @@ pub fn play_sfx( sound_ping: Res, sound_connect: Res, sound_bikestart: Res, + sound_crash: Res, ) { if settings.mute_sfx && !events_sfx.is_empty() { events_sfx.clear(); @@ -160,6 +165,7 @@ pub fn play_sfx( Sfx::Ping => sound_ping.0.clone(), Sfx::Connect => sound_connect.0.clone(), Sfx::EnterVehicle => sound_bikestart.0.clone(), + Sfx::Crash => sound_crash.0.clone(), Sfx::None => sound_ping.0.clone(), }, settings: PlaybackSettings::DESPAWN, @@ -175,6 +181,7 @@ pub fn str2sfx(sfx_label: &str) -> Sfx { "ping" => Sfx::Ping, "connect" => Sfx::Connect, "entervehicle" => Sfx::EnterVehicle, + "crash" => Sfx::Crash, _ => Sfx::None, }; } diff --git a/src/camera.rs b/src/camera.rs index 623db67..33fd0f1 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -81,7 +81,14 @@ fn run_camera_controller( return; } - angularvelocity.0 = Vec3::splat(0.0); + if angularvelocity.length_squared() > 0.0001 { + angularvelocity.x *= 0.98; + angularvelocity.y *= 0.98; + angularvelocity.z *= 0.98; + } + else { + angularvelocity.0 = Vec3::splat(0.0); + } // Handle key input let mut axis_input = Vec3::ZERO;