Depois do primeiro video da aula, meus zumbis estavam andando e direções aleatorias e estavam doidos. No segundo video quando foi colocado as condições para que ele ficasse parado quando chegasse no lugar e a animação também. Eles começaram a ficar parados no lugar do gerador e se fazer a animação de movimento mas não saem do lugar.
public GameObject Jogador;
private MovimentoPersonagem movimentoInimigo;
private AnimacaoPersonagem animaInimigo;
private Status statusInimigo;
public AudioClip SomDeMorte;
private Vector3 posicaoAleatoria;
private Vector3 direcao;
private float contadorVagar;
private float tempoEntrePosicoesAleatorias = 4;
// Start is called before the first frame update
void Start()
{
animaInimigo = GetComponent<AnimacaoPersonagem>();
Jogador = GameObject.FindWithTag("Jogador");
movimentoInimigo = GetComponent<MovimentoPersonagem>();
AleatorizarZumbi();
statusInimigo = GetComponent<Status>();
}
void FixedUpdate()
{
var distancia = Vector3.Distance(transform.position, Jogador.transform.position);
movimentoInimigo.Rotacionar(direcao);
animaInimigo.Movimentar(direcao.magnitude);
if (distancia > 15)
{
Vagar();
}
else if (distancia > 2.5)
{
direcao = Jogador.transform.position - transform.position;
movimentoInimigo.Movimentar(direcao, statusInimigo.Velocidade);
animaInimigo.Atacar(false);
}
else
{
animaInimigo.Atacar(true);
}
}
void Vagar()
{
contadorVagar -= Time.deltaTime;
if (contadorVagar <= 0)
{
posicaoAleatoria = AleatorizarPosicao();
contadorVagar += tempoEntrePosicoesAleatorias;
}
bool ficouPertoOSuficiente = Vector3.Distance(transform.position, posicaoAleatoria) <= 0.05;
if (ficouPertoOSuficiente)
{
direcao = posicaoAleatoria - transform.position;
movimentoInimigo.Movimentar(direcao, statusInimigo.Velocidade);
}
}
Vector3 AleatorizarPosicao()
{
Vector3 posicao = Random.insideUnitSphere * 10;
posicao += transform.position;
posicao.y = transform.position.y;
return posicao;
}