Any way to detect if player is on Ground?

I tried using a lot of methods:
1.I tried Raycast, however, it only detected if something was directly under it, if it was at the player’s corner it didn’t detected it.
2.Checking for 0 Rigidbody.velocity didn’t work too, because of the overlap correction(the player was just basically moving up and down
3.Getting all the collider contacts and looking at the normals is so slow, that most of the time there was a 0.1 sec delay and it was really hard to reset(i once again checked the normals, but at the oncollisionleave

I’m using the 3 method now, but the rigidbody needs to be set to CCD. Is there a better way to detect if player is on ground without charactercontroller?

use 1 but from more than the middle of the gameobject?

I tried, I have a jumping mechanism too, that doesn’t work, because of the intersection that rigidbody allows,

Create a central Transform and then have multiple Transforms around. Make an array an iterate through them to get ground detection.