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

NullReferenceException

Olá! Quando dou play no jogo, minha personagem não anda mais e esse erro aparece no meu console "NullReferenceException: Object reference not set to an instance of an object Movimentacao.FixedUpdate () (at Assets/Scripts/Movimentacao.cs:69)". Tentei pesquisar no fórum da própria Unity como solucionar o problema, mas não consegui encontrar o erro no meu script.

SCRIPT PERSONAGEM

public class Movimentacao : MonoBehaviour
{

    public float velocidade = 10;
    Vector3 direcao;
    public LayerMask MascaraChao; 
    public GameObject TextoGameOver; 
    private Rigidbody rigidbodyJogador;
    private Animator animatorJogador;
    public int Vida = 100; //vida do jogador (contador)
    public ControlaInterface scriptControlaInterface;
    public AudioClip SomDeDano;
    private MovimentoPersonagem movimentoJogador;

    private void Start()
    {
        rigidbodyJogador = GetComponent<Rigidbody>();
        animatorJogador = GetComponent<Animator>();
        Time.timeScale = 1;
        movimentoJogador = GetComponent<MovimentoPersonagem>();
    }

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

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

        if(direcao != Vector3.zero){ //Vector3.zero é como a Unity define todos os 3 valores do Vector como 0, ou seja, 

            animatorJogador.SetBool("Movendo", true);

        } else {
          animatorJogador.SetBool("Movendo", false);  
        }

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

            }
        }


    }
    void FixedUpdate(){ 

        movimentoJogador.Movimentar(direcao, velocidade);

SCRIPT MovimentoPersonagem

public class MovimentoPersonagem : MonoBehaviour
{
    private Rigidbody meuRigidboby;

    void Awake(){
        meuRigidboby = GetComponent<Rigidbody>();
    }

    public void Movimentar (Vector3 direcao, float velocidade)
    {
        meuRigidboby.MovePosition(meuRigidboby.position + (direcao * velocidade * Time.deltaTime)); 

    }

    public void Rotacionar (Vector3 direcao){

        Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        meuRigidboby.MoveRotation(novaRotacao); 

    }
}

Obrigada desde já pela ajuda :)

2 respostas
solução!

Oi, Maria, tudo bem?

E o Jogador tem o script MovimentoPersonagem nele?

Era isso!! Ia vir aqui agora para avisar que tinha consertado. Obrigada mesmo assim!

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