Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Meus Zumbis não estão andando.

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;
    }
4 respostas

Oi, Kim, tudo bem? Pra essa acho que é melhor ver o projeto todo.

Você consegue fazer um .zip da pasta do projeto e colocar aqui?

Você pode usar links de algo como um Google Drive, Dropbox, etc. para isso basta lembrar de deixar o acesso do arquivo publico.

Segue o link do drive do projeto, agradeço a ajuda.

Link: https://drive.google.com/file/d/18jf5lVGzhBY7oMZGZzZiM0NBTIoGXLfI/view?usp=sharing

solução!

Oi, Kim, tudo bem?

Dei uma olhada aqui e o erro parece estar nessa linha

if (ficouPertoOSuficiente) a gente gostaria de testar se ele não está perto pra movimentar

Então seria algo como: if(!ficouPertoOSuficiente) ou if(ficouPertoOSuficiente == false)

Vish era isso mesmo, eu não vi isso.. Obrigado pela ajuda.