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

Fica aprecendo um aviso e o zumbi não para a animação de andar

Look rotation viewing vector is zero UnityEngine.Quaternion:LookRotation(Vector3) MovimentoPersonagem:RotacionarPersonagens(Vector3) (at Assets/Scripts/MovimentoPersonagem.cs:25) ControlaInimigo:FixedUpdate() (at Assets/Scripts/ControlaInimigo.cs:32)

Código:

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

public class ControlaInimigo : MonoBehaviour
{
    public GameObject jogador;
    private MovimentoPersonagem MovimentaInimigo;
    private AnimacaoPersonagem animacaoInimigo;
    private status statusInimigo;
    private Vector3 posicaoAleatoria;
    private Vector3 direcao;
    private float contadorVagar;
    private float tempoEntrePosicoesAleatorias = 4;
        // Start is called before the first frame update
    void Start()
    {
        jogador = GameObject.FindWithTag("Jogador");
        AleatorizarZumbi();
        MovimentaInimigo = GetComponent<MovimentoPersonagem>();
        animacaoInimigo = GetComponent<AnimacaoPersonagem>();
        statusInimigo = GetComponent<status>();

    }

    // Update is called once per frame

     void FixedUpdate()
     {
        float distancia = Vector3.Distance(transform.position, jogador.transform.position);

        MovimentaInimigo.RotacionarPersonagens(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 = aleatorizarPosicao();
            contadorVagar += tempoEntrePosicoesAleatorias;
        }


        bool ficouPertoOSuficiente = Vector3.Distance(transform.position, posicaoAleatoria) <= 0.05;

        if (ficouPertoOSuficiente == false)
        {
            direcao = posicaoAleatoria - transform.position;
            MovimentaInimigo.Movimentar(direcao, statusInimigo.velocidade);
        }



    }

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

    }
   void AtacaJogador()
   {
        int dano = Random.Range(20, 30);
        jogador.GetComponent<ControladorJogador>().Tomardano(dano);
   }
    void AleatorizarZumbi()
    {
        int geraTipoZumbi = Random.Range(1, 28);
        transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
    }

}
7 respostas

Oi, Ronaldo, tudo bem?

Isso é só um warning de que você não precisaria rotacionar caso a direcao fosse zero porque não muda nada. Mas não deveria influenciar diretamente no nosso código.

Quer fazer um .zip do projeto e enviar um link público de Google Drive, Dropbox, ou algo assim?

Como a animação não para meu chute seria algo na configuração do Animator ou que 2.5 de distancia não é suficiente pra fazer a diferença para o atacar ficar true, quer tentar aumentar esse valor e ver se muda algo?

Vou aumentar então se n der certo vou mandar o zip dai Muito obrigado

Deu certo, Ronaldo? :)

Boa tarde, fiz as alterações, só que agora fica aparecendo esse erro: Controller 'Zumbi': Transition '' in state 'Zumbi_Andar' uses parameter 'Movendo' which does not exist in controller. UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion) GeradorDeZumbi:NewMethod2() (at Assets/Scripts/GeradorDeZumbi.cs:41) GeradorDeZumbi:NewMethod1() (at Assets/Scripts/GeradorDeZumbi.cs:36) GeradorDeZumbi:NewMethod() (at Assets/Scripts/GeradorDeZumbi.cs:31) GeradorDeZumbi:Update() (at Assets/Scripts/GeradorDeZumbi.cs:23)

desculpa a demora pra responder obrigado

solução!

Oi, Ronando, tudo bem?

Essa parâmetro "Movendo" existe no animator? As vezes quando você copia e cola ele copia uns parâmetros que não existem. Não sei se foi isso que deu algum problema.

Achei o erro coloquei movendo com o M minúsculo Muito obrigado pela paciência

Que bom! Qualquer coisa estamos por aqui :)

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