1
resposta

Método Vagar()

Boa noite,

Eu coloquei a variável "direcao" dentro da condição e o efeito ficou muito bom, não precisei fazer a troca na animação, segue:

void Vagar()
{
    contadorVagar -= Time.deltaTime;

    if(contadorVagar <= 0)
    {
        contadorVagar = tempoEntrePosicoesAleatorias;
        direcao              = AleatorizarPosicao() - transform.position;
    }

    movimentaInimigo.Rotacionar(direcao);
    movimentaInimigo.Movimentar(direcao, statusInimigo.Velocidade);
}

Parabéns pela didática e boas praticas, estou gostando muito desses cursos.

1 resposta

Oi, Emerson, legal! No nosso caso como o zumbi está indo em linha reta não há muitas mudanças na direcao então calcular uma vez é suficiente.

O que pode acontecer talvez é um zumbi topar no outro e isso fazer ele se mover um pouco fazendo com que ele nunca chegue na posição mas isso é bem difícil e mesmo que aconteça o zumbi logo iria para uma nova posição já que o contador se esgotaria de novo, então faria pouca diferença. Só não tem aquele efeito de parar que o ficouPertoSuficiente causaria mas que mesmo que você colocasse deve funcionar na maioria das vezes (menos quando um zumbi tocar no outro).

Então o que você fez é uma excelente otimização do jogo.