Health/Damage System isn't working as expected.

This is the Gunfire script, Ideally it works it can detect what it’s shooting as expected.

public class GunFire : MonoBehaviour
{
    public float damage = 10f;
    public float range = 100f;

    public Camera fpsCam;

    void Update()
    {
        if (Input.GetButtonUp("Fire1"))
        {
            Fire();
        }
    }

    void Fire()
    {
        RaycastHit hit;
        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name);

            ZombieTarget Target = hit.transform.GetComponent<ZombieTarget>();
            if(Target != null)
            {
                Target.TakeDamage(damage);
            }
        }
    }
}

Here’s the second segment, The actual Health/Damage system, When the bullet hits it detects the enemy as expected though It doesn’t Remove health as I want it to, Instead it just Destroys the actor on the first hit, when It should take 5 hits then get destroyed.

public class ZombieTarget : MonoBehaviour
{
    public float health = 50f;

    public void TakeDamage (float amount)
    {
        health -= amount;
        if (health <= 0f) ;
        {
            Die();
        }
    }

    void Die()
    {
        Destroy(gameObject);
    }
}

Any assistance would be greatly appreciated.

Your issue is that semicolon at the end of your if header:

if (health <= 0f) ; // <<-- this one
{
    Die();
}

Your if statement has an empty body because you put that semicolon there. So your code reads like this

if (health <= 0f)
{
}

{
    Die();
}

So your Die method is always called unconditionally.

I do not believe so, the values in inspector are the same, the variables are only being accessed from the two scripts

Switch your Update method to FixedUpdate

Reason

Update runs once per frame. FixedUpdate can run once, zero, or several times per frame, depending on how many physics frames per second are set in the time settings, and how fast/slow the framerate is, and Raycast used Physics.