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); } }