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

NullReferenceException

Quando dou play para jogar, o jogador não anda nem rotaciona e o seguinte erro aparece várias vezes: NullReferenceException: Object reference not set to an instance of an object ControlaJogador.FixedUpdate () (at Assets/Scripts/ControlaJogador.cs:39)

Segue os scripts ControlaJogador e MovimentoJogador.

public class ControlaJogador : MonoBehaviour {

    public float Velocidade = 10;
    private Vector3 direcao;
    public LayerMask MascaraChao;
    public GameObject TextoGameOver;
    public int Vida = 100;
    public ControlaInterface scriptControlaInterface;
    public AudioClip SomDeDano;
    private MovimentoJogador movimentoJogador;
    private AnimacaoPersonagem animacaoJogador;

    private void Start() {
    Time.timeScale = 1;
    movimentoJogador = GetComponent<MovimentoJogador>();
    animacaoJogador = GetComponent<AnimacaoPersonagem>();
    }

    void Update() {
        float eixoX = Input.GetAxis("Horizontal");
    float eixoZ = Input.GetAxis("Vertical");

    direcao = new Vector3(eixoX, 0, eixoZ);

    animacaoJogador.Movimentar(direcao.magnitude);

    if(Vida <= 0 && Input.GetButtonDown("Fire1")) {
      SceneManager.LoadScene("hospital_anapaula");
    }
    }

    void FixedUpdate() {
    movimentoJogador.Movimentar(direcao, Velocidade);
    movimentoJogador.RotacaoJogador(MascaraChao);
    }

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

    }
}
public class MovimentoJogador : MovimentoPersonagem
{
    public void RotacaoJogador(LayerMask MascaraChao) {
    Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
    Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);
    RaycastHit impacto;

    if(Physics.Raycast(raio, out impacto, 100, MascaraChao)) {
      Vector3 posicaoMiraJogador = impacto.point - transform.position;
      posicaoMiraJogador.y = transform.position.y;
      Rotacionar(posicaoMiraJogador);
    }
    }
}
7 respostas

Oi, Ana Paula, tudo bem?

A personagem tem o script MovimentoJogador?

Sim, professor. O script MovimentoJogador está no jogador. Não é esse o problema.

Pode fazer um .zip do seu projeto e mandar pra gente? Você pode subir no Google Drive, Dropbox, etc e colar o link aqui lembre-se de colocar como público.

Pode fazer um .zip do seu projeto e mandar pra gente? Você pode subir no Google Drive, Dropbox, etc e colar o link aqui lembre-se de colocar como público.

solução!

Oi, Ana Paula, tudo bem?

A jogadora estava com o script MovimentaPersonagem e não o MovimentaJogador. É só fazer essa troca que deve funcionar :)

Obrigada, professor! Deu tudo certo!