improve audio a bit

This commit is contained in:
Jim 2025-09-02 21:29:26 -04:00
parent 587b902e79
commit 09e244d748
Signed by: jim
GPG key ID: 3D7D94BA53088BF4
8 changed files with 30 additions and 12 deletions

1
Cargo.lock generated
View file

@ -1713,6 +1713,7 @@ dependencies = [
"building",
"combat",
"combat_damagers",
"rand",
"resources",
"state",
"upgrade",

View file

@ -1,22 +1,22 @@
(
map: {
MouseButton(Middle): [
CameraOrbitEnable,
],
KeyCode(ShiftLeft): [
MultiPlaceTower,
],
KeyCode(F1): [
ToggleDebugUI,
],
MouseButton(Right): [
PlaceTower,
],
MouseButton(Left): [
CameraPanEnable,
],
MouseButton(Middle): [
CameraOrbitEnable,
],
MouseScroll: [
CameraZoom,
],
KeyCode(F1): [
ToggleDebugUI,
MouseButton(Left): [
CameraPanEnable,
],
MouseMovementX: [
CameraYaw,

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -6,6 +6,7 @@ edition = "2024"
[dependencies]
bevy = { workspace = true }
avian3d = { workspace = true }
rand = { workspace = true }
state = { path = "../state" }
combat = { path = "../combat" }

View file

@ -15,6 +15,7 @@ use combat::{
projectiles::{Fire, Projectile, ProjectileLauncher, get_launch_vector},
};
use combat_damagers::ContactDamage;
use rand::{Rng, thread_rng};
use resources::{Cost, Quantity};
use upgrade::{Upgrade, UpgradeApplied, UpgradeTree};
@ -203,7 +204,7 @@ fn register(
info_entity: info,
death_audio: assets.load("sounds/revthump2.ogg"),
shoot_audio: assets.load("sounds/gust2.ogg"),
explosion_audio: assets.load("sounds/boom1.ogg"),
explosion_audio: assets.load("sounds/gust1.ogg"),
});
}
@ -266,7 +267,6 @@ fn on_fire(
Transform::from_translation(trigger.event().spawn_pos),
Projectile::from(&trigger.event().launcher),
Projectile::collision_layers(trigger.event().team),
DeathAudio(res.explosion_audio.clone()),
SuncannonProjectile(suncannon.clone()),
LinearVelocity(v),
res.projectile_collider.clone(),
@ -309,6 +309,16 @@ fn on_projectile_explode(
skip_invulnerability: true,
});
}
commands.spawn((
AudioPlayer(res.explosion_audio.clone()),
PlaybackSettings {
mode: bevy::audio::PlaybackMode::Despawn,
speed: thread_rng().gen_range(0.8..1.2),
spatial: false,
..default()
},
Transform::from_translation(gtf.translation()),
));
for pellet in 0..projectile.0.pellet_count {
let angle = 2. * PI / (projectile.0.pellet_count as f32) * pellet as f32;
let v = Vec3::new(angle.sin(), 0., angle.cos()) * projectile.0.pellet_speed;

View file

@ -4,7 +4,7 @@
use bevy::{audio::Volume, prelude::*};
use rand::{Rng, thread_rng};
use state::AppState;
use state::{AppState, CoreState};
pub struct MusicPlugin;
@ -13,7 +13,8 @@ impl Plugin for MusicPlugin {
app.add_systems(Startup, init)
.add_systems(Update, update_track)
.add_systems(OnEnter(AppState::Menu), play_menu_music)
.add_systems(OnEnter(AppState::Game), play_game_music);
.add_systems(OnEnter(AppState::Game), play_game_music)
.add_systems(OnEnter(CoreState::Dead), kill_music);
}
}
@ -41,6 +42,11 @@ fn init(mut commands: Commands, assets: Res<AssetServer>) {
});
}
fn kill_music(player_query: Single<Entity>, mut commands: Commands) {
let player_entity = player_query.into_inner();
commands.entity(player_entity).remove::<AudioSink>();
}
fn play_menu_music(
player_query: Single<(Entity, &mut BackgroundMusicPlayer)>,
mut commands: Commands,