Physics.CheckSphere Always Returns False

public void Attack(GameObject enemy)
{
    if (Physics.CheckSphere(transform.position, attack_radius, enemy.layer))
    {
        if (attack_time == 0)
        {
            if (Input.GetMouseButtonDown(0) || this.gameObject.layer == 8)
            {
                enemy.GetComponent<CharacterInfo>().health -= damage;
                attack_time = attack_cooldown;
            }
        }
    }
    if (attack_time > 0)
    {
        attack_time -= Time.deltaTime;
    }
}

Above you find my code for an attack method I use in instances of my enemy class as well as my player class. This method is called every update, and the values within I have found to be accurate via sending the values to console and seeing what they are.

However, the Physics.CheckSphere() always returns false. All of my game objects have colliders and correct tags applied to them, yet Physics.CheckSphere() always returns false. Any ideas why?

Heres a screenshot of what the sphere looks like on my player (in the red) and overlaps my enemy in the blue:

You appear to be using a layer instead of a layer mask.

Besides using layer instead of a layermask, this condition would never be true:

That’s because you did this:

attack_time would in almost all cases end up being some small number below 0. The chance that the time would actually hit exactly 0 is almost zero. So your condition should be
if (attack_time <= 0)

and instead of using enemy.layer you should use 1 << enemy.layer which gives you a layermask with only the layer your enemy is on.