Problema com som de colisão

Olá, estou com um problema na aula “Adicionando Som de Colisão” do módulo construção extrema, meu código está igual ao da aula, mas mesmo depois de passar 5 segundos os cubos continuam fazendo sons de colisão, alguém sabe como resolver?

3 curtidas

Desmarcou a opção de loop?

2 curtidas

Está desmarcada, mas mesmo após passar os 5 segundos os cubos toda vez que colidem, eles fazem som.

3 curtidas

Por favor, anexe mais informações sobre o problema. Se possível, envie capturas de tela dos seus scripts e do prefab do seu cubo para que possamos analisar com mais detalhes.

3 curtidas

Aí está o script:

3 curtidas

Bem observado! Fiz uns testes no projeto e realmente o som continua sendo tocado após o tempo de 5 segundos.

Segue abaixo o script atualizado de CuboColisao:

using UnityEngine;

public class CuboColisao : MonoBehaviour
{
    [SerializeField] private AudioSource colisaoAudioSource;

    private bool podeTocarSom = true;

    private void OnCollisionEnter(Collision collision)
    {
        // Se já desativou o som, sai da função, não executa o resto do código
        if (!podeTocarSom) return;

        // Toca o som de colisão
        colisaoAudioSource.PlayOneShot(colisaoAudioSource.clip);

        // Garante que a rotina para desativar o som seja chamada apenas uma vez
        if (!IsInvoking(nameof(DesativarSom)))
        {
            // Desativa a detecção de sons após 5 segundos
            Invoke(nameof(DesativarSom), 5f);
        }
    }

    private void DesativarSom()
    {
        podeTocarSom = false;
    }
}
2 curtidas

O script deu certo, obrigado!

2 curtidas