Exemple #1
0
    IEnumerator EvasionCoroutine()
    {
        m_crowdControlManager.ImpenetrableOn();
        m_animFuntion.SetTrigger(m_animFuntion.hashTEvasion);

        yield return(new WaitForSeconds(0.1f));

        if (!m_playerState.IsPlayerGround())
        {
            m_rigidbody2D.constraints = RigidbodyConstraints2D.FreezePositionY | RigidbodyConstraints2D.FreezeRotation;
            AddMeve(m_speedAir);
        }
        else
        {
            AddMeve(m_speed);
        }

        m_playerState.PlayerStateEvasion();

        while (true)
        {
            if (!m_animFuntion.IsTag("Evasion"))
            {
                break;
            }

            yield return(new WaitForSeconds(0.02f));
        }

        m_rigidbody2D.constraints = RigidbodyConstraints2D.FreezeRotation;
        m_rigidbody2D.velocity    = new Vector2(m_rigidbody2D.velocity.x / 3, 0.1f);
        m_bEvasion = false;
        m_crowdControlManager.ImpenetrableOff();

        if (m_playerState.IsPlayerGround())
        {
            m_playerState.PlayerStateReset();
        }
        else
        {
            m_playerState.PlayerStateDoubleJump();
        }
    }
Exemple #2
0
    private IEnumerator AttackCoroutine()
    {
        if (!m_animFuntion.IsTag("NormalAttack"))
        {
            m_bAttacking = false;
            yield break;
        }

        string m_sAnimName = m_animFuntion.GetCurrntAnimClipName();

        PlayStartSwitch(m_sAnimName);
        PlayAnimEffect(m_sAnimName);

        while (true)
        {
            if (!m_animFuntion.IsName(m_sAnimName))
            {
                PlayEndSwitch(m_sAnimName);
                m_sAnimName = m_animFuntion.GetCurrntAnimClipName();
                PlayStartSwitch(m_sAnimName);
            }

            if (!m_animFuntion.IsTag("NormalAttack"))
            {
                PlayEndSwitch(m_sAnimName);
                break;
            }

            yield return(0);
        }

        m_bAttacking = false;
        m_sAnimName  = null;

        CancelInvoke();
        m_playerCrowdControlManager.OffAirStop();

        if (!m_playerState.IsPlayerGround())
        {
            m_playerState.PlayerStateDoubleJump();
        }
    }