Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Áudio de dano não é reproduzido

Boa tarde!

Percebi que havia uma dúvida igual a essa em outro tópico, mas não consegui solucionar meu problema com base nela. Quando os zumbis atacam a personagem, aparece o seguinte erro:

"NullReferenceException: Object reference not set to an instance of an object ControlaJogador.TomarDano (System.Int32 dano) (at Assets/Scripts/ControlaJogador.cs:71) ControlaInimigo.AtacaJogador () (at Assets/Scripts/ControlaInimigo.cs:43)"

Além disso, o áudio de dano não é reproduzido e não aparece a mensagem de "fim de jogo" quando a life acaba. A impressão que tive era de que a linha "ControlaAudio.instancia.PlayOneShot(SomDeDano);" travava o código e impedia a execução das linhas seguintes. Coloquei esta linha antes da "scriptControlaInterface.AtualizarSliderVidaJogador();" para testar e concluí que isso realmente acontecia, pois os ataques do zumbis pararam de afetar a barra de life da personagem.

Minha função TomarDano() está assim:

    public void TomarDano(int dano){
        Vida -= dano;
        scriptControlaInterface.AtualizarSliderVidaJogador();
        ControlaAudio.instancia.PlayOneShot(SomDeDano);
        if (Vida <= 0){
            Time.timeScale = 0;
            TextoGameOver.SetActive(true);
        }
    }

e minha classe ControlaAudio está assim:

public class ControlaAudio : MonoBehaviour{
    private AudioSource meuAudioSource;
    public static AudioSource instancia;

    void Awake(){
        meuAudioSource = GetComponent<AudioSource>();
        instancia = meuAudioSource;
    }
}

Já fiz download do código final do módulo para conferir essas funções e tentar encontrar onde errei, mas não encontrei.. Vocês poderiam me ajudar, por gentileza?

Desde já, agradeço.

1 resposta
solução!

Consegui resolver. Percebi que tinha colocado o script ControlaAudio no componente errado. De qualquer forma, obrigado.