Physics.CheckSphere not working?

I’m trying to use Physics.CheckSphere to ground my character. Problem is, it’s always set to true, and I don’t know why. It did work at one point, so its not impossible, but I must have changed something and forgot, because now this is happening.

Related script:

public CharacterController controller;
public Animator anim;
public CapsuleCollider groundChecker;
public bool isGrounded;
public float vertVel;
public float gravity;
public float jumpForce;
private Vector3 moveVector;

private AnimatorStateInfo currentBaseState;

void Start()
    anim = GetComponent<Animator>();
    controller = GetComponent<CharacterController>();

void FixedUpdate()

    if (isGrounded)
        vertVel = -gravity * Time.deltaTime;

        if (Input.GetAxisRaw("JumpKeys") != 0)
            vertVel = jumpForce;
            Debug.Log("I'm Jumping");
        vertVel -= gravity * Time.deltaTime;
    moveVector = new Vector3(0, vertVel, 0);

void GroundCheck()
    float radius = groundChecker.radius;
    Vector3 pos = transform.position + Vector3.up * (radius * 0.9f);
    //returns true if the sphere touches something on that layer
    isGrounded = Physics.CheckSphere(pos, radius);

    Debug.Log(Physics.CheckSphere(pos, radius));


There are a few other parts of the script (the start, the part that handles player movement), but they’re unrelated, and they wouldn’t go into the box for script in the post (first time using the forum, don’t know what it’s called, sorry).

I’ve ran Debug.Log on the individual components of CheckSphere - they work fine. I put the groundChecker capsule collider as a child of the player, so that the character controller collider doesn’t interfere with it. I’ve tried setting the capsule collider to a trigger and back. I don’t know what to do.

I know this is an old Post but… FYI The character controller generates its own Collider.

Check if some collider is overlapping the sphere. Do it by disabling every collider possibly in the range.

Hey. Probably I am late, but this might help anyone who is facing this issue. Watch the video below (go to time stamp: 17:34). The ground check is implemented through layermask(so that the checkshphere don not collide with the player and set it always true) and checkshpere.