예제 #1
0
        public void StartJumping()
        {
            if (!m_isJumping && m_positionDetector.IsOnGround && (!m_isFrozen || m_isRecovering))
            {
                OnAttackInterrupt.Invoke();
                if (m_isFrozen)
                {
                    Freeze(false);
                }

                m_animator.SetBool("Jump", true);
                m_animator.SetBool("Airborn", true);

                StartCoroutine(Jump());
            }
        }
예제 #2
0
        public void StartDash()
        {
            if (!m_isDashing && m_dashTimer <= 0f && (!m_isFrozen || m_isRecovering))
            {
                //Ensure that player doesn't double Dash
                m_isDashing = true;
                OnAttackInterrupt.Invoke();

                if (m_isFrozen)
                {
                    Freeze(false);
                }

                m_animator.SetBool("Dash", true);

                StartCoroutine(Dash());
                m_sounds.LaunchDashSound();
            }
        }
예제 #3
0
        public IEnumerator SlamDown(float speed)
        {
            m_slamDownFX.Proc();
            while (!m_positionDetector.IsOnGround)
            {
                transform.position = new Vector3(transform.position.x,
                                                 transform.position.y - speed * Time.deltaTime,
                                                 transform.position.z);

                yield return(null);
            }

            m_slamDownFX.gameObject.SetActive(false);
            Freeze(false);
            m_superArmored = false;
            m_camMgr.ShakeCameraTemporary(m_shakeAmplitude, m_shakeFrequency, m_shakeDuration);
            OnAttackInterrupt.Invoke();

            yield return(new WaitForEndOfFrame());
        }