ta apresentando esse erro e eu n to conseguindo resolver desde cedo NullReferenceException: Object reference not set to an instance of an object ControlaZumbi.FixedUpdate () (at Assets/Scripts/ControlaZumbi.cs:36)
codigo do zumbi
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaZumbi : MonoBehaviour, IMatavel
{
public GameObject Jogador;
public float Velocidade = 5;
private Status statusZumbi;
public AudioClip SomDeMorte;
private Vector3 posicaoAleatoria;
private Vector3 direcao;
private MovimentaPersonagem movimentaZumbi;
private AnimacaoPersonagem animacaoZumbi;
private float contadorVagar;
private float tempoEntrePosicoesAleatorias = 4;
// Start is called before the first frame update
void Start()
{
Jogador = GameObject.FindWithTag("Jogador");
GetComponent<MovimentaPersonagem>();
GetComponent<AnimacaoPersonagem>();
AleatorizarZumbi();
statusZumbi = GetComponent<Status>();
}
// Update is called once per frame
void FixedUpdate()
{
float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
animacaoZumbi.Movimentar(direcao.magnitude);
if (distancia > 15)
{
Vagar();
}
else if (distancia > 2.5)
{
direcao = Jogador.transform.position - transform.position;
animacaoZumbi.Atacar(false);
}
else
{
animacaoZumbi.Atacar(true);
}
}
void Vagar()
{
contadorVagar -= Time.deltaTime;
if(contadorVagar <= 0)
{
posicaoAleatoria = AleatoriarPosicao();
contadorVagar += tempoEntrePosicoesAleatorias;
}
bool ficouPertoAteDemais = Vector3.Distance(transform.position, posicaoAleatoria) != 0.05;
if (ficouPertoAteDemais == false)
{
direcao = posicaoAleatoria - transform.position;
movimentaZumbi.Movimentar(direcao, Velocidade);
}
}
Vector3 AleatoriarPosicao()
{
Vector3 posicao = Random.insideUnitSphere * 10;
posicao += transform.position;
posicao.y = transform.position.y;
return posicao;
}
void AtacaJogador()
{
int dano = Random.Range(5, 10);
Jogador.GetComponent<ControlaJogador>().TomarDano(dano);
}
void AleatorizarZumbi()
{
int geraTipoZumbi = Random.Range(1, 28);
transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
}
public void TomarDano(int dano)
{
statusZumbi.Vida -= dano;
if(statusZumbi.Vida >= 0)
{
Morrer();
}
}
public void Morrer()
{
Destroy(gameObject);
ControlaAudio.instancia.PlayOneShot(SomDeMorte);
}
}