Files
HauntedBloodlines/Assets/Scripts/Scripted Events/PlaySound.cs
2025-05-29 22:31:40 +03:00

70 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlaySound : MonoBehaviour
{
[SerializeField] AudioSource _audioSource;
[SerializeField] AudioClip _audioClip;
#region Public Access
[HideInInspector] public AudioSource audioSource;
#endregion
[Tooltip("Check loopClip if you want the clip to loop")]
public bool LoopClip;
[HideInInspector] public bool ClipStopped;
private bool ClipPlayed;
private void Awake()
{
audioSource = _audioSource;
}
private void OnTriggerEnter(Collider col)
{
if (col.gameObject.tag == "Player" && !ClipPlayed)
{
if (!LoopClip) //if it's not a loop clip:
{
PlayThisSound(_audioClip);
}
else //If it's a loop clip:
{
StartCoroutine(PlayClipLoop());
}
}
}
private void OnTriggerExit(Collider col)
{
if (col.gameObject.tag == "Player")
{
ClipPlayed = true;
}
}
IEnumerator PlayClipLoop()
{
while (!ClipStopped)
{
if (!_audioSource.isPlaying)
{
PlayThisSound(_audioClip);
}
yield return null;
}
}
public void PlayThisSound(AudioClip audioClip)
{
_audioSource.PlayOneShot(audioClip);
}
public void PlayThisSoundLooped()
{
StartCoroutine(PlayClipLoop());
}
}