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