Esempio n. 1
0
    public void Move(float move, bool defense, bool jump, int atk, bool sprint)   //procedimento acessado externamente que altera o corpo de acordo com as vars
    //print("Last Move"+lastMove);
    //if(Comment) print("Vars de movimento:"+move+","+defense+","+jump+","+atk+","+sprint);
    {
        if (m_Anim.GetBool("Death"))
        {
            return;
        }

        /*if (move != 0)
         *      lastMove = move;*/
        count_Without_move = 0;
        if (!Habilidades [0])
        {
            sprint = false;
        }


        //if(Comment) print(move+" "+defense+" "+jump+" "+atk);
        //Anim_Hash = m_Anim.GetCurrentAnimatorStateInfo (0).shortNameHash;//guarda hash em int da animação atual para possiveis verificações futuras.
        if (waitTime < Timetowait)          //tempo de pausa entre ataques(evitar combos infinitos)
        {
            noAtacking = true;
            atk        = 0;
            waitTime++;
        }

        if (m_Anim.GetInteger("Atk_1") != 0)           //caso iniciar ataque a var é avisada
        {
            if (Flying)
            {
                sprint = true;
            }
            noAtacking = false;
        }

        if (noAtacking)          //zera vars que serão usadas futuramente
        {
            Gdamaged = false;
            if (!minion)
            {
                m_Anim.SetInteger("Atk_2", 0);
                m_Anim.SetInteger("Atk_3", 0);
            }
        }
        else
        {
            //var inferior encontra em quantos porcerto de execução a animação atual está
            float pocertanim = !m_Anim.GetCurrentAnimatorStateInfo(0).IsName("Idle")?m_Anim.GetCurrentAnimatorClipInfo(0).Length *m_Anim.GetCurrentAnimatorStateInfo(0).normalizedTime:0;
            pocertanim = (pocertanim >= 1) ? pocertanim - Mathf.Floor(pocertanim): pocertanim; //corrigi a var pode vir de 0 á 1 ou de 1 á 2
            if (pocertanim > 0.5f && altArvCombo == 1)                                         //caso no meio da primeira animação de ataque então guarde valor do botão de ataque na var atk_2
            {
                if (atk != 0 && comboTree[(2 * (m_Anim.GetInteger("Atk_1")) + atk) - 1])       //verifica se possui a continuação caso sim salve
                {
                    m_Anim.SetInteger("Atk_2", atk);
                }
                atk = 0;
            }
            else if (pocertanim > 0.5f && altArvCombo == 2)              //se no meio do segundo ataque...mesma logica
            {
                if (atk != 0 && comboTree[(2 * (m_Anim.GetInteger("Atk_1") + m_Anim.GetInteger("Atk_2")) + atk) - 1])
                {
                    m_Anim.SetInteger("Atk_3", atk);
                }
                atk = 0;
            }
        }

        if (atk != 0 && m_Anim.GetInteger("Atk_1") == 0 && comboTree[atk - 1])
        {
            m_Anim.SetInteger("Atk_1", atk);             //seta ataque
        }
        if (!minion)
        {
            m_Anim.SetBool("Defense", defense);    //seta defesa
        }
        if ((m_Grounded || m_AirControl))          //verifica se ele está no chão ou pode se mover no ar.
        {
            canMoveX = !(defense || atk != 0);

            Horizontal.perform(move, sprint);
        }

        if (!minion)
        {
            if (jump && defense)
            {
                Vertical.perform(jump, defense);
                //m_Anim.SetBool ("Jump_Bot", jump);
            }
            else if (!jumpIni && jump && !defense && (m_Grounded || (PlusJump && m_Rigidbody2D.velocity.y < 0)))
            {
                m_Rigidbody2D.velocity     = new Vector2(0, -0.5f);
                m_Rigidbody2D.gravityScale = 0;
                jumpIni = true;
                m_Anim.SetBool("JumpIni", jumpIni);
                m_Anim.SetBool("Jump_Bot", jump);                 //envia pulo para animação
                canMoveX = false;
            }
        }
        else
        {
            Vertical.perform(jump, defense);
        }
    }