Example #1
0
 /// <summary>
 /// Reseta as animações, volta ao estado de movimento
 /// </summary>
 public void RestearAnimassaum()
 {
     atacando = false;
     if (estadoPernas != EstadosPersonagem.Movimento)
     {
         estadoPernas = EstadosPersonagem.Movimento;
     }
     if (estadoTorso != EstadosPersonagem.Movimento)
     {
         estadoTorso = EstadosPersonagem.Movimento;
     }
 }
Example #2
0
 public override void SofrerDano(float dano)
 {
     base.SofrerDano(dano);
     if (morrido == true)
     {
         meuAnimator.SetTrigger("Morrendo");
         estadoPernas = EstadosPersonagem.Morrendo;
         estadoTorso  = EstadosPersonagem.Morrendo;
         GetComponent <CapsuleCollider>().enabled = false;
         DroparItem();
         Player.SetExperiencia(Experiencia);
         Destroy(gameObject, 5);
     }
 }
Example #3
0
 // Update is called once per frame
 void Update()
 {
     if (morrido == false)
     {
         MovimentoAI();
         MudarAnimassaum();
         PlayerDead = Player.estaMorto();
     }
     else
     {
         estadoPernas = EstadosPersonagem.Morrendo;
         estadoTorso  = EstadosPersonagem.Morrendo;
         meuAgente.SetDestination(transform.position);
         MudarAnimassaum();
     }
 }
Example #4
0
    /// <summary>
    /// Cuida da movimentação da IA do esqueleto
    /// </summary>
    public void MovimentoAI()
    {
        //Velocidade do navmesh agent
        float velocidadeAtual = meuAgente.velocity.sqrMagnitude;

        //Velocidade entre 0 e 1 para modificar a animação de andar
        movimentoSpeed = velocidadeAtual / velocidadeMax;

        //Verifica se a movimentação é diferente de 0, se for muda os estados para movimento!
        //Que são lidos pelo metodo mudar animassaum.
        if (movimentoSpeed != 0)
        {
            estadoPernas = EstadosPersonagem.Movimento;
            estadoTorso  = EstadosPersonagem.Movimento;
        }

        //Define o destino atual
        Vector3 destino = Waypoints[waypointAtual].position;

        //Distancia entre o inimigo e o destino
        float distancia = Vector3.Distance(transform.position, destino);

        //Distancia do inimigo e o player
        float distanciaPlayer = Vector3.Distance(transform.position, Player.transform.position);

        //Verifica se a distancia do waypoint é menor que a do alvo
        //Se for, quer dizer que o inimigo chegou no destino
        if (distancia <= distanciaDoAlvo)
        {
            //Aumenta o waypoint para 1
            waypointAtual += 1;
            //Se chegar no último waypoint, começa do começo, ou seja 0
            if (waypointAtual >= Waypoints.Count)
            {
                waypointAtual = 0;
            }
        }

        //Verifica se o esqueleto está perto do Player
        //Se não, continua seguindo o waypoint
        if (distanciaPlayer < distanciaMinPlayer)
        {
            if (distanciaPlayer > 1.3)
            {
                //Seta o destino para o player
                meuAgente.SetDestination(Player.transform.position);
            }
            else
            {
                meuAgente.SetDestination(transform.position);
                estadoTorso = EstadosPersonagem.Ataque;
            }
            //Desenha a linha vermelha
            Debug.DrawLine(transform.position, Player.transform.position, Color.red);
        }
        else
        {
            //Seta o destino para o waypoint
            meuAgente.SetDestination(Waypoints[waypointAtual].position);
            //Desenha a linha ciana
            Debug.DrawLine(transform.position, Player.transform.position, Color.cyan);
        }
    }