Why my enemy health bar script is not working?

I have a script for my enemy health bar and for my bullet and im pretty sure it should work but when bullet hits the enemy, health bar doesnt do anything. In console it says that the bullet hit.

Enemy health bar script:

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

public class enemyhp : MonoBehaviour
{

    public int starthealth = 100;
    public int health;

    public Image healthbar;

    public void Start()
    {
        health = starthealth;
    }

    public void Update()
    {
        if (health <= 0)
        {
            die();
        }
    }

    public void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.tag == "bullet")
        {
            health -= 25;
            Destroy(gameObject);
        }
    }

    public void LateUpdate()
    {
        healthbar.fillAmount = health / starthealth;
    }

    void die ()
    {
        Destroy(gameObject);
    }



}

Bullet script:

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

public class bullet : MonoBehaviour {

    public float moveSpeed = 7f;

    Rigidbody2D rb;

    player target;
    Vector2 moveDirection;

	// Use this for initialization
	void Start () {
        rb = GetComponent<Rigidbody2D>();
        target = GameObject.FindObjectOfType<player>();
        moveDirection = (target.transform.position - transform.position).normalized * moveSpeed;
        rb.velocity = new Vector2(moveDirection.x, moveDirection.y);
        Destroy(gameObject, 3f);
	}
	
	// Update is called once per frame
	void OnTriggerEnter2D (Collider2D col)
    {
		if (col.gameObject.tag.Equals ("enemyhitbox"))
        {
            Debug.Log("Hit!");
            Destroy(gameObject);
        }
	}
}

Good day.

You are trying to act over the same event from different scripts, and thats not good if you pretend to destroy some of the objects containing the scripts that are detecting the event… Look

When the bullet hits the enemy:

1- The bullet detects the enemy and destroys himself.

2- The enemy detects the bullet and take damage.

You should do all needed things from one script only, or the enemy, or the bullet. I think the better is the bullet, so you ca shoot different things.

So the bullet must say something like:

void OnTriggerEnter2D (Collider2D col)
 {
     if (col.gameObject.tag.Equals ("enemyhitbox"))
     {
         Debug.Log("Hit!");
         col.gameObject.GetComponent<enemyhp>().TakeDamage(25);
         Destroy(gameObject);
     }
 }

Then in the Enemy, need to have this “TakeDamage” method:

public void Takedamage (int Damage)
{
 health -= Damage;
}

Sooo, the enemy does not detect the bullet, is the bullet that detects the enemy, and run the enemy “TakeDamage” method to do the damage.

Bye!