using System; using System.Collections; using System.Collections.Generic; using JetBrains.Annotations; using UnityEngine; using Random = UnityEngine.Random; public class AudioRandomiser : MonoBehaviour { public AudioClip[] audioSources; public HerdController herd; public GameObject audioPosition; public float waitTime; public float[] volumes; // Start is called before the first frame update void Start() { } void Awake() { StartCoroutine(PlayClips()); } public void PlaySoundFromCount() { int count = 1; if (herd != null) { count = (int) Mathf.Round(herd.HerdAmount() / 10); count = Mathf.Clamp(count, 1, 10); } for (int i = 0; i < count; i++) { StartCoroutine(RandomSound()); } } public IEnumerator RandomSound() { float wait = Random.Range(0.5f, 4.5f); yield return new WaitForSeconds(wait); AudioClip clip = audioSources[Random.Range(0, audioSources.Length)]; float volume = Random.Range(volumes[0], volumes[1]); AudioSource.PlayClipAtPoint(clip, audioPosition.transform.position, volume); } public IEnumerator PlayClips() { yield return new WaitForSeconds(waitTime); PlaySoundFromCount(); StartCoroutine(PlayClips()); } // Update is called once per frame void Update() { } }