using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; public class AmbianceControl : MonoBehaviour { public PlayerEventTrigger[] triggers = new PlayerEventTrigger[4]; private bool playingInsideAmb = true; public AudioSource ambAudio, playerStepsAudio; public List<AudioSource> washersAndDryers = new List<AudioSource>(); public AudioSource acUnit; public AudioSource wallClock; public AudioSource forestGirl; public AudioSource radio; public AudioMixer mix; private void Update() { foreach (PlayerEventTrigger trigger in triggers) { if (trigger.Triggered && trigger.gameObject.name.Contains("Inside") && !playingInsideAmb) { PlayInsideAmbiance(); playingInsideAmb = true; } if (trigger.Triggered && trigger.gameObject.name.Contains("Outside") && playingInsideAmb) { PlayOutsideAmbiance(); playingInsideAmb = false; } } } public void PlayOutsideAmbiance() { ambAudio.volume = 1f; playerStepsAudio.spread = 360; foreach (AudioSource machine in washersAndDryers) { machine.volume = 0.5f; } acUnit.volume = 1; wallClock.volume = 0.075f; forestGirl.volume = 0.5f; radio.volume = 0.2f; mix.SetFloat("ambCutOff", 5000f); mix.SetFloat("machinesCutOff", 2000f); mix.SetFloat("acCutOff", 22000f); mix.SetFloat("forestCutOff", 22000f); mix.SetFloat("clockCutOff", 2000f); mix.SetFloat("radioCutOff", 400f); } public void PlayInsideAmbiance() { ambAudio.volume = 0.5f; playerStepsAudio.spread = 0; foreach (AudioSource machine in washersAndDryers) { machine.volume = 1; } acUnit.volume = 0.5f; wallClock.volume = 0.25f; forestGirl.volume = 0.05f; radio.volume = 0.65f; mix.SetFloat("ambCutOff", 2000f); mix.SetFloat("machinesCutOff", 22000f); mix.SetFloat("acCutOff", 2000f); mix.SetFloat("forestCutOff", 2000f); mix.SetFloat("clockCutOff", 22000f); mix.SetFloat("radioCutOff", 1046f); } public bool GetPlayingInsideAmb() { return playingInsideAmb; } }