Character won't jump on collider edge.


Below I have posted a character movement/jumping script that allows the character to jump whenever a game object with layer “ground” has been reached. However, my character fails to jump whenever it is standing on the edge of the collider.
How do I fix this? Am I missing something in the Editor itself, or is there something wrong with my script?

Reference image:

Script (C#):

using UnityEngine;

public class PlayerMovement : MonoBehaviour {

    private float horizontal;
    public float speed = 8f;
    public float jumpingPower = 16f;
    private bool isFacingRight = true;

    [SerializeField] private Rigidbody2D rb;
    [SerializeField] private Transform groundCheck;
    [SerializeField] LayerMask groundLayer;

	// Update is called once per frame
	void Update()
        horizontal = Input.GetAxisRaw("Horizontal");

        if (Input.GetButtonDown("Jump") && isGrounded())
            rb.velocity = new Vector2(rb.velocity.x, jumpingPower);

        if (Input.GetButtonUp("Jump") && rb.velocity.y > 0f)
            rb.velocity = new Vector2(rb.velocity.x, rb.velocity.y * 0.5f);


    private void FixedUpdate()
        rb.velocity = new Vector2(horizontal * speed, rb.velocity.y);

    private bool isGrounded()
        return Physics2D.OverlapCircle(groundCheck.position, 0.1f, groundLayer);

    private void Flip()
        if (isFacingRight && horizontal < 0f || !isFacingRight && horizontal > 0f)
            isFacingRight = !isFacingRight;
            Vector3 localScale = transform.localScale;
            localScale.x *= -1f;
            transform.localScale = localScale;

I think the key might be (A) the collider radius in isGrounded method is not big enough or (B) groundCheck is misspositioned (I guess it should be perfectly centered under the feet of the character)