Audio: per-SoundEffect occlusion via Steam Audio + 3D flag refactor

- New occlusion opt-in on SoundEffect: spatialized instances get a
  SteamAudioSource with raycast occlusion + frequency-dependent
  transmission (walls muffle instead of hard-mute)
- Replace SoundEffectDistanceRange asset indirection with an explicit
  _3d bool (user refactor); rolloff/distance now left to defaults
- Hey.asset: occlusion enabled

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Fable 5 committed 2026-07-11 23:33:29 +02:00
1 parent c25d0777c2
commit 706100e322
8 files changed
+21 -56

No files matched your search

+5 -2
View File
@@ -7,7 +7,6 @@ namespace Prototype
[CreateAssetMenu(menuName = "Prototype/Sound Effect")]
public class SoundEffect : ScriptableObject
{
[SerializeField] SoundEffectDistanceRange distanceRange;
[SerializeField] Vector2 volumeMultiplier = new(1, 1);
[SerializeField] Vector2 pitch = new(.95f, 1.05f);
@@ -15,7 +14,10 @@ namespace Prototype
public AudioMixerGroup audioMixerGroup;
public float volumeMultiplierFactor = 1;
[SerializeField] bool loop;
[SerializeField] bool _3d;
[SerializeField] bool spatialize;
[Tooltip("Occlude/muffle the sound behind walls via Steam Audio. Requires spatialize and exported scene geometry.")]
[SerializeField] bool occlusion;
[Header("Additional Settings")]
[SerializeField, Range(0, 1)] float defaultVolume = .8f;
@@ -35,8 +37,9 @@ namespace Prototype
volumeMultiplier = Random.Range(volumeMultiplier.x, volumeMultiplier.y) * volumeMultiplierFactor,
pitch = Random.Range(pitch.x, pitch.y),
loop = loop,
_3d = _3d,
spatialize = spatialize,
distanceRange = distanceRange ? distanceRange.range : null
occlusion = occlusion
};
#if UNITY_EDITOR