'Why does OnCollisionEnter2D not working? Unity

I have an enemy prefab with and a bullet prefab with rigidbody2D and boxcolliders to both of them. I have made a TakeDamage function for the enemy when i made meelee combat and also a bullet shooting script. I made a simple OnCollisionEnter2D on the enemy(code is below) and they do collide and give the collision effect but the function doesn't work, it doesn't give any errors either... What do I do now?

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

public class enemy : MonoBehaviour
{

    public Transform player;
    private Rigidbody2D rb;
    [SerializeField] private SpriteRenderer sr;
    private Vector2 movement;
    public float moveSpeed = 5f;
    public int maxHealth = 100;
    int currentHealth;
    Color32 colorRes = new Color32(255, 100, 50, 255);
    public ParticleSystem deathParticles;
    public GameObject projectile;
    public int enemyDamage = 50;
    public LayerMask rock;

    
    


    // Start is called before the first frame update
    void Start()
    {
        rb = this.GetComponent<Rigidbody2D>();
        sr = GetComponent<SpriteRenderer>();

        currentHealth = maxHealth;

    }

    // Update is called once per frame
    void Update()
    {
        sr.flipX = player.position.x - transform.position.x > 0;
        Vector3 direction = player.position - transform.position;
        direction.Normalize();
        movement = direction;
    }

     private void FixedUpdate()
    {
        moveCharacter(movement);

    }

    void moveCharacter(Vector2 direction)
    {
        rb.MovePosition((Vector2)transform.position + (direction * moveSpeed));
    }

    public void TakeDamage()
    {
        currentHealth -= enemyDamage;
        if(currentHealth <= 0)
        {
            Die();
        }
        StartCoroutine(BecomeRed());

        


    }

    void Die()
    {
       

        Instantiate(deathParticles, transform.position, Quaternion.identity);
        Destroy(gameObject);
    }

    
    

    IEnumerator BecomeRed()
    {
        sr.color = colorRes;
        yield return new WaitForSeconds(0.6f);
        sr.color = Color.white;
    }

    
    void OnCollisionEnter2D(Collision2D coll)
    {
        Debug.Log("test");
        if (coll.gameObject.name == "rock")
        {
            TakeDamage();
            Destroy(projectile);
        }
    }

    
    
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source