Estou tentando apenas fazer o codigo demonstrado nas video aulas porem esta dando erro, o zumbi nao para como deveria , mesmo usando o mesmo codigor no jogador ( onde la ele funciona ) fora esse mensagem "look rotation viewing vector is zero UnityEngine.Quaternion:LookRotation(Vector3) MovimentaPersonagem:Rotacionar(Vector3) (at Assets/Script/MovimentaPersonagem.cs:22) ControlaInimigo:FixedUpdate() (at Assets/Script/ControlaInimigo.cs:36)", poderia por favor me ajudar.
Codigo do Controla Inimigo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaInimigo : MonoBehaviour , IMorrivel
{
public GameObject Jogador;
private Animator animatorInimigo;
private ControlaInterface scriptControlaInterface;
private MovimentaPersonagem movimentaInimigo;
private AnimacaoPersonagem animacaoInimigo;
private Status statusInimigo;
public AudioClip SomDeMorte;
private Vector3 posicaoAleatoria;
private Vector3 direcao;
private float contadorVagar;
private float tempoEntrePosiçoesAleatoria = 4;
// Start is called before the first frame update
void Start()
{
Jogador = GameObject.FindWithTag("Personagem");
AleatorizarZumbi();
animatorInimigo = GetComponent<Animator>();
movimentaInimigo = GetComponent<MovimentaPersonagem>();
animacaoInimigo = GetComponent<AnimacaoPersonagem>();
statusInimigo = GetComponent<Status>();
}
private void FixedUpdate()
{
float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
movimentaInimigo.Rotacionar(direcao);
animacaoInimigo.Movimentar(direcao.magnitude);
if (distancia > 15)
{
Vagar();
}
else if (distancia > 2.5)
{
direcao = Jogador.transform.position - transform.position;
movimentaInimigo.Movimentar(direcao, statusInimigo.Velocidade);
animacaoInimigo.Atacar(false);
}
else
{
animacaoInimigo.Atacar(true);
}
}
void Vagar ()
{
contadorVagar -= Time.deltaTime;
if(contadorVagar<=0)
{
posicaoAleatoria = AleatorizaPosicao();
contadorVagar += tempoEntrePosiçoesAleatoria;
}
bool Suficiente = Vector3.Distance(transform.position, posicaoAleatoria) >= 0.5;
if (Suficiente)
{
direcao = posicaoAleatoria - transform.position;
movimentaInimigo.Movimentar(direcao, statusInimigo.Velocidade);
}
}
Vector3 AleatorizaPosicao()
{
Vector3 posicao = Random.insideUnitSphere * 10;
posicao += transform.position;
posicao.y = transform.position.y;
return posicao;
}
void AtacaJogador()
{
int Dano = Random.Range(10,20);
Jogador.GetComponent<ControlaJogador>().TomarDano(Dano);
}
void AleatorizarZumbi()
{
int geratTipoZumbi = Random.Range(1, 28);
transform.GetChild(geratTipoZumbi).gameObject.SetActive(true);
}
public void TomarDano(int Dano)
{
statusInimigo.Vida -= Dano;
if(statusInimigo.Vida == 0)
{
Morrer();
}
}
public void Morrer()
{
Destroy(gameObject);
ControlaAudio.intancia.PlayOneShot(SomDeMorte);
}
}