Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Erro ao zumbi atacar o Jogador

Quando o zumbi bate no jogador ocorre um erro que diz:

NullReferenceException: Object reference not set to an instance of an object

ControlaJogador.TomarDano (System.Int32 dano) (at Assets/Scripts/ControlaJogador.cs:78)

ControlaInimigo.AtacaJogador () (at Assets/Scripts/ControlaInimigo.cs:54)

Então fui até essas linhas mas não consegui encontrar o erro de jeito nenhum, segue os codigos, e sinalizei as linhas que estão com erro:

Estou gostando muito das aulas, então desde já agradeço a atenção. :)

ControlaJogador:


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

ControlaInimigo:

    void AtacaJogador ()
    {
        int dano = Random.Range(20, 30);
        Jogador.GetComponent<ControlaJogador>().TomarDano(dano);   <-----------

    }


}

ControlaAudio:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

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

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

    // Update is called once per frame
    void Update()
    {

    }
}

ControlaInterface:

    private ControlaJogador scriptControlaJogador;
    public Slider SliderVidaJogador;

    void Start()
    {
        scriptControlaJogador = GameObject.FindWithTag("Jogador").GetComponent<ControlaJogador>();

        SliderVidaJogador.maxValue = scriptControlaJogador.Vida;
        AtualizarSliderVidaJogador();
    }

    // Update is called once per frame
    void Update()
    {

    }
    public void AtualizarSliderVidaJogador ()
    {
        SliderVidaJogador.value = scriptControlaJogador.Vida;
    }
}
2 respostas
solução!

Oi, Guilherme, tudo bem?

A variável scriptControlaInterface no Jogador está preenchida?

Funcionou! Muito obrigado, eu tinha deletado o canvas ;-;

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software