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