Проверка на проигрывание музыки

Когда объект подходит ко мне начинается музыка, но дело в том что проверка на то что объект подошел ко мне в FixedUpdate, и из-за этого постоянно вызывается функция с проигрыванием музыки, тем самым получается что музыка только успевает проиграть один тик, и дальше перезапускается, читал документацию по Audio Source, но не увидел метода который мне нужен. как можно сделать проверку на то что пока музыка не закончилась она не начнется заново?

Вот код который я использую:

private void PlayHeartSound()
{
    m_AudioSource.clip = heartSound;
    m_AudioSource.Play();
}

Ответы (2 шт):

Автор решения: Алексей Шиманский

Ну самое банальное сделать флаг. Изначально false. При вызове метода ставить в true. В FixedUpdate проверить, если флаг не true - вызвать проигрывание звука. Примерно так:

public bool audioSourceIsSwitchedOn = false;
 
void Update() {
    if (!audioSourceIsSwitchedOn) {
        PlayHeartSound();
    } 
}

private void PlayHeartSound()
{
    m_AudioSource.clip = heartSound;
    m_AudioSource.Play();
    audioSourceIsSwitchedOn = true;
}
→ Ссылка
Автор решения: aepot

Просто добавить проверку, чтобы воспроизведение начиналось только если тишина либо играет что-то другое.

private void PlayHeartSound()
{
    if (!m_AudioSource.isPlaying || m_AudioSource.clip != heartSound)
    {
        m_AudioSource.clip = heartSound;
        m_AudioSource.Play();
    }
}
→ Ссылка