Olá! No teste da movimentação do meu zumbi (antes de ajeitar os bugs relacionados a animação), meu zumbi continua meio maluco. Ele não anda e para, e depois volta a andar. A seguir está a parte do meu código construída durante essa aula. Obrigada desde já!
private Vector3 direcao;
private Vector3 posicaoAleatoria;
private float contadorVagar;
private float tempoEntrePosicoesAleatorias = 5;
void FixedUpdate(){
float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
rigidbodyZumbi.MovePosition(rigidbodyZumbi.position + direcao.normalized * statusInimigo.Velocidade * Time.deltaTime);
movimentoInimigo.Rotacionar(direcao);
if (distancia > 15){
Vagar();
}
else if (distancia > 2.5){
direcao = Jogador.transform.position - transform.position;
movimentoInimigo.Movimentar(direcao.normalized,statusInimigo.Velocidade);
animacaoInimigo.Atacar(false);
}
else {
animacaoInimigo.Atacar(true);
}
}
void Vagar(){
contadorVagar -= Time.deltaTime;
if(contadorVagar <= 0){
posicaoAleatoria = AleatorizarPosicao();
contadorVagar += tempoEntrePosicoesAleatorias;
}
bool ficouPertoSuficiente = Vector3.Distance (posicaoAleatoria, transform.position) <= 0.05;
if (ficouPertoSuficiente == false){
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;
}