using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioDimensionSwitch : MonoBehaviour { [SerializeField] [FMODUnity.EventRef] private string SelectAudio; private FMOD.Studio.EventInstance Audio; private FMODUnity.StudioListener Listener; [SerializeField] private float MaxDistance = 20f; private float Distance; private bool DisLessThanMax = false; private bool DisLastFrame = false; void Start() { Listener = FindObjectOfType(); Audio = FMODUnity.RuntimeManager.CreateInstance(SelectAudio); FMODUnity.RuntimeManager.AttachInstanceToGameObject(Audio, transform, GetComponent()); Audio.start(); Audio.release(); } // Update is called once per frame void Update() { Distance = Vector3.Distance(transform.position, Listener.transform.position); if (Distance <= MaxDistance) { DisLessThanMax = true; } else if (Distance > MaxDistance) { DisLessThanMax = false; } if (DisLessThanMax != DisLastFrame && DisLessThanMax) { DimensionSwitch(3); } else if (DisLessThanMax != DisLastFrame && !DisLessThanMax) { DimensionSwitch(2); } DisLastFrame = DisLessThanMax; } void DimensionSwitch (int is2Dor3D) { Audio.setParameterByName("Dimension Switch", is2Dor3D); Debug.Log("Switching '" + SelectAudio + "' to " + is2Dor3D + "D."); } }