Status
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Status : MonoBehaviour
{
public int VidaInicial = 100;
[HideInInspector]
public int Vida;
public float Velocidade = 5;
void Awake ()
{
Vida = VidaInicial;
}
}
ControlaJogador
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ControlaJogador : MonoBehaviour
{
private Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public ControlaInterface scriptControlaInterface;
public AudioClip SomDeDano;
private MovimentoJogador atualMovimentoJogador;
private AnimacaoPersonagem animacaoJogador;
public Status statusJogador;
private void Start()
{
Time.timeScale = 1;
atualMovimentoJogador = GetComponent<MovimentoJogador>();
animacaoJogador = GetComponent<AnimacaoPersonagem>();
statusJogador.GetComponent<Status>();
}
// Update is called once per frame
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
direcao = new Vector3(eixoX, 0, eixoZ);
animacaoJogador.Movimentar(direcao.magnitude);
if(statusJogador.Vida <= 0)
{
if(Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("game");
}
}
}
void FixedUpdate()
{
atualMovimentoJogador.Movimentar(direcao, statusJogador.Velocidade);
atualMovimentoJogador.RotacaoJogador(MascaraChao);
}
public void TomarDano(int dano)
{
statusJogador.Vida -= dano;
scriptControlaInterface.AtualizaSliderVidaJogador();
ControlaAudio.instancia.PlayOneShot(SomDeDano);
if(statusJogador.Vida <= 0)
{
Time.timeScale = 0;
TextoGameOver.SetActive(true);
}
}
}
Após fazer as modificações para incluir Status no Jogador, ele não corre, nem rotaciona. Os erros que aparecem são: NullReferenceException: Object reference not set to an instance of an object ControlaJogador.FixedUpdate () (at Assets/Scripts/ControlaJogador.cs:48)
NullReferenceException: Object reference not set to an instance of an object ControlaJogador.Update () (at Assets/Scripts/ControlaJogador.cs:37)
Tentei usar Awake, ao invés de Start, para atribuir dar o valor a Vida, mas deu os mesmos erros. Estou usando uma versão do Unity de 2018. Nos códigos, minha variável 'atualMovimentoJogador' equivale ao 'meuMovimentoJogador', das aulas.