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 :)