I don't know how to ground check the player

I’m trying to use the OverlapCircle to check if the player is on the ground or not but I don’t know how to continue the script

using UnityEngine;
using System.Collections;

public class playercontroller : MonoBehaviour
{

[HideInInspector]
public bool facingRight = true;
[HideInInspector]
public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
public LayerMask whatIsGround;



public bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;

// Use this for initialization
void Awake()
{
    anim = GetComponent<Animator>();
    rb2d = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update() {
    if (Input.GetKey(KeyCode.Space) && grounded == true) {
        jump = true;
    }
}

void FixedUpdate() {
    float h = Input.GetAxis("Horizontal");

    anim.SetFloat("Speed", Mathf.Abs(h));

    if (h * rb2d.velocity.x < maxSpeed)         //vai adicionar velociade ao jogador e manter no limite
        rb2d.AddForce(Vector2.right * h * moveForce);

    if (Mathf.Abs(rb2d.velocity.x) > maxSpeed)          //se o jogador passar do limite de velocidade ira baixar até o limite
        rb2d.velocity = new Vector2(Mathf.Sign(rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);

    if (h > 0 && !facingRight)              //ira fazer o flip no sprite junto com a animação 
        Flip();
    else if (h < 0 && facingRight)
        Flip();

    if (jump) {
        // anim.SetTrigger("Jump"); 
        rb2d.AddForce(new Vector2(0f, jumpForce));
        jump = false;
    }
}

void Flip(){             //função de virar o script 
        facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}

void onGroundCollision(Collision coll) {
    
/if(Physics2D.OverlapCircle( , 5)){
        grounded = true;
    
			
    }

}

I find raycasting works better for checking if you are grounded or not

    public float groundedHeight = 0.5f; // the height above ground to determine if the player is grounded
    public float checkRate = 1.0f; // how often in seconds we check to see if we are grounded
    public bool grounded = false;// is grounded or not
    public LayerMask groundLayer;//the layer on which we can be grounded
    public float heightOffset = 0.25f; // we dont want to cast from the players feet (may cast underground sometimes), so we offset it a bit

    void Start()
    {
        InvokeRepeating("GroundCheck", 0, checkRate);
    }

    void GroundCheck()
    {
        if (Physics.Raycast(new Vector3(transform.position.x, transform.position.y + heightOffset, transform.position.z), Vector3.down, groundedHeight + heightOffset, groundLayer))
        {
            grounded = true;
        }
        else {
            grounded = false;
        }
    }

77575-screenshot-2.jpgpublic bool grounded = false;

float groundcheckRadius = 0.1f;

public LayerMask groundLayer;

public Transform groundcheck;

grounded = Physics2D.OverlapCircle(groundcheck.position, groundcheckRadius, groundLayer);

make an empty gameobject named “groundcheck” and put it right under your player.77576-screenshot-3.jpg

drag the “groundcheck” gameobject to groundcheck field and make sure ground layer is selected for ground layer

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playermovement : MonoBehaviour
{
public float JumpHeight;
Rigidbody2D rb;
float move;
public float speed;
// Start is called before the first frame update
void Start()
{
rb = GetComponent();
}

// Update is called once per frame
void Update()
{
    // Right left movement
    move = Input.GetAxis("Horizontal");
    rb.velocity = new Vector2(move * speed, rb.velocity.y);

     
    
    if (Input.GetButtonDown("Jump"))
    {
        rb.velocity = new Vector2(rb.velocity.x, JumpHeight);
    }
   

    
    
       
    
}

}