Course contentsShow
← Unity Game Development
Lesson 181 of 8283. Physics and InteractionFree lesson

Detecting Grounded State Using Raycasting

Learners will implement a robust ground detection system using physics raycasts to restrict jumping while in mid-air.

In this lesson, you will learn how to use a physics raycast to precisely determine if your player is touching the ground, ensuring you can only jump while standing on a solid surface.

Why use Raycasting instead of Collisions?

While OnCollisionEnter can detect if you hit the floor, it can sometimes be "sticky" or unreliable if your player character is sliding down a slope or hovering slightly above the floor due to physics jitter. A Raycast acts like an invisible laser beam fired from your character’s feet downward. If that laser hits an object within a short distance, we know for certain the player is grounded.

Implementing the Ground Check

To do this, we need a starting point (the player's position) and a direction (straight down). We also use a LayerMask to ensure the ray only detects objects we define as "Ground," preventing the player from jumping off other non-ground objects (like floating items).

Here is a simple implementation for your player script:

public float rayDistance = 0.1f;
public LayerMask groundLayer;

bool IsGrounded()
{
    // Fire a ray from the player position, downwards, for a very short distance
    return Physics.Raycast(transform.position, Vector3.down, rayDistance, groundLayer);
}

void Update()
{
    if (Input.GetButtonDown("Jump") && IsGrounded())
    {
        // Apply your jump force here
    }
}

Visualizing the Result

Because physics rays are invisible, it is difficult to know if your rayDistance is set correctly. You can use Debug.DrawRay inside your code to see the line in the Scene view:

Debug.DrawRay(transform.position, Vector3.down * rayDistance, Color.red);

If the red line is too short, your character won't detect the floor; if it is too long, the player might be able to "jump" while standing slightly off the edge of a platform. Adjust this value until the ray just barely touches the floor beneath your character's feet.

Key Takeaway: Using a physics raycast provides a precise, distance-based check to verify ground contact, preventing unintended mid-air jumps and improving control responsiveness.