Rigidbody jump script collision help.

Hello. Lately I was searching for perfect rigidbody collision script. What I mean by that is something to check where character is touching the ground and switch grounded properly. I have found many ideas with tags on the floor, which is no go since tagging everything will be kinda chaotic, second idea was to check for velocity but it doesn’t work. So I kept digging myself and well, I’ve found out about collision flags but I don’t know how to apply them properly.

void OnCollisionStay(Collision collisionInfo)
    {
        if ( CollisionFlags.CollidedBelow != 0)
        {
            grounded = true;
            anim.SetBool ("Grounded", true);
        }
}

It’s simply not working properly and I still get ground toggled back on even if touching side which makes my jump repeatable on a wall launching me off like rocket.

Set a tag for anything you want to be considered ground then check

if(collisionInfo.tag == "Ground")
{
    grounded = true;
    anim.SetBool ("Grounded", true);
}

If you have a wall that you don’t want to be ground but you do want to be able to walk, or jump on top of it from a higher location, then put a thin box collider on top of the wall and tag that as Ground.

That way you don’t class the side of a wall as Ground but the top can be.