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);
}
}
}