3
respostas

Meu Zumbi esta com algum valor no eixo y mas não encontro.

Por algum motivo o eixo y fica mudando, já tentei de tudo e não consegui resolver.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ContraladorZumbi : MonoBehaviour, IMatavel
{

    public GameObject Jogador;
    private AnimacaoPersonagem animatorZumbi;
    public AudioClip SomMorte;
    private ControladorMovimentacao movimentacao;
    private Status status;
    private Vector3 direcao;
    private Vector3 posicaoAleatoria;
    private int dano = 10;
     private float contadorVagar;
    private float tempoEspera = 4;

    // Start is called before the first frame update
    void Start()
    {
        Jogador = GameObject.FindWithTag("Heroi");
        animatorZumbi = GetComponent<AnimacaoPersonagem>();
        movimentacao = GetComponent<ControladorMovimentacao>();
        Vector3 posicaoLocal = transform.localPosition;
        AleatorizarZumbi();
        status = GetComponent<Status>();
        
    }

    void FixedUpdate()
    {
        float distancia = Vector3.Distance(transform.position, Jogador.transform.position);
        direcao.y = 0;

        if(direcao != Vector3.zero) {
            movimentacao.Rotacionar(direcao);
        }

        if (distancia > 15 )
        {
            Vagar();

        }
        else if (distancia > 2.5)
        {
            direcao = Jogador.transform.position - transform.position;
            direcao.y = 0;
            animatorZumbi.Atacar(false);
     
            movimentacao.Movimentar(direcao, status.Velocidade);

        } else {
            direcao = Jogador.transform.position - transform.position;
            direcao.y = 0;
            animatorZumbi.Atacar(true);
        }
    }

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

        if(contadorVagar <= 0) 
        {
            posicaoAleatoria = AleatorizarPosicao();
            contadorVagar += tempoEspera;
        }

        bool ficouPerto = Vector3.Distance(posicaoAleatoria, transform.position) <= 0.05;
        if(ficouPerto == false);
        {
            
            direcao = posicaoAleatoria - transform.position;
            direcao.y = 0;
            movimentacao.Movimentar(direcao, status.Velocidade);
        }
    }

    Vector3 AleatorizarPosicao()
    {
        Vector3 posicao = Random.insideUnitSphere * 10;
        posicao += transform.position;
        posicao.y = 0;
        return posicao;
    }


    void AtacaJogador() 
    {
        Jogador.GetComponent<ControlarJogador>().TomarDano(dano);
    }

    public void TomarDano (int dano) 
    {
        status.Vida -= dano;

        if (status.Vida <= 0)
        {
            Morrer();
        }
        
    }

    public void Morrer() 
    {
        Destroy(gameObject);
        ControladorAudio.Instacia.PlayOneShot(SomMorte);
    }

    void AleatorizarZumbi ()
    {
        transform.GetChild(1).gameObject.SetActive(false);
        int geraTipoZumbi = Random.Range(1,28);
        dano = Random.Range(10,31);
        transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
    }
}
3 respostas

Olá, tudo bem?

Como assim fica mudando, ele fica subindo? Isso causa algum problema?

Ele fica bugando na hora de parar de andar

Tem foto, vídeo ou alguma coisa pra gente dar uma olhada? Os colisores estão alinhados?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software