Problema com o som de colisão no módulo Construção Extrema

Estou tendo problemas com a colisão do cubo no jogo, mesmo após passar 5 segundos os outros cubos continuam emitindo o som de colisão, aqui vai o print do script, que no caso está correto:



2 curtidas

Fiz alguns testes no projeto e identifique esse problema também. Desabilitar o script não impedirá que OnCollisionEnter seja executado. Fiz uma atulização no script de CuboColisao para resolver o problema, segue abaixo:

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

Problema solucionado. Muito obrigado!!!

1 curtida