コード例 #1
0
    /// <summary>
    /// Check whether or not the player is grounded using a single raycast.
    /// </summary>
    public void GroundCheck()
    {
        m_onGround = m_groundCheck.CastRayVelocity(m_physicsController.Velocity.y, groundCheckLayerMask);

        if (m_fallThrough)
        {
            m_fallThrough = !m_onGround;
        }

        if (!m_fallThrough)
        {
            m_onPlatform = m_groundCheck.CastRayVelocity(m_physicsController.Velocity.y, platformLayerMask);
        }

        if (!m_onGround && !m_onPlatform)
        {
            if (m_isJumping == false)
            {
                jumpCount++;
            }

            m_isJumping   = true;
            m_fallThrough = false;
        }
        else if (m_onGround || m_onPlatform)
        {
            m_physicsController.Velocity = new Vector2(m_physicsController.Velocity.x, 0);
            m_isJumping = false;
            jumpCount   = 0;
        }
    }