using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; public class SoundManager : MonoBehaviour { public AudioClip clip; public AudioClip clip2; public AudioClip clip3; private AudioSource audioS; private Animator anim; private bool trackTime = false; private float timePlayed = 0f; private Scene currentScene; private void Start() { audioS = GetComponent<AudioSource>(); anim = GetComponent<Animator>(); audioS.clip = clip2; audioS.Play(); } private void FixedUpdate() { if (trackTime == true) { timePlayed += Time.deltaTime; if (timePlayed >= 5f) { timePlayed = 0; StartCoroutine(StopCombatMusic()); } } } public void SetAudio(Scene targetScene) { var previousScene = currentScene; currentScene = targetScene; if (currentScene.name == "HUB scene" && previousScene.name != "Main Menu") { audioS.clip = clip2; audioS.Play(); } else if (currentScene.name == "Main Menu" && previousScene.name != "HUB scene") { audioS.clip = clip2; audioS.Play(); } if (currentScene.name != "HUB scene" && currentScene.name != "Main Menu") { audioS.clip = clip; audioS.Play(); } } public IEnumerator FadeInMusic(AudioClip targetClip) { audioS.volume = 0.0f; if (anim.GetBool("playing") == false) { anim.Play("Fade In Music"); } audioS.clip = targetClip; audioS.Play(); yield return new WaitForSecondsRealtime(3.5f); audioS.volume = 0.2f; anim.Play("Idle"); } public void StartMusicCouroutine() { StartCoroutine(PlayCombatMusic()); } public IEnumerator PlayCombatMusic() { trackTime = true; timePlayed = 0; audioS.volume = 0.0f; if (anim.GetBool("playing") == false) { anim.Play("Fade In Combat Music"); anim.SetBool("playing", true); } audioS.clip = clip3; if (!audioS.isPlaying) audioS.Play(); yield return new WaitForSecondsRealtime(3.5f); audioS.volume = 0.1f; anim.Play("Idle"); } public IEnumerator StopCombatMusic() { trackTime = false; anim.SetBool("playing", false); anim.Play("Fade Out Music"); yield return new WaitForSecondsRealtime(3.5f); anim.Play("Idle"); StartCoroutine(FadeInMusic(clip)); } }