My health wont change

I made a float health in my game and when my enemy rams into me he should make my health decrease by 2. Here’s the script:
Enemy Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AiChase : MonoBehaviour
{
private PlayerController playerControllerScript;
public GameObject player;
public float speed;

private float distance;
public bool flip;

// Start is called before the first frame update
void Start()
{
    playerControllerScript = GameObject.Find("Player").GetComponent<PlayerController>();
}

// Update is called once per frame
void Update()
{
    Vector2 direction = player.transform.position - transform.position;
    direction.Normalize();

    //Moves enemy to player
    transform.position = Vector2.MoveTowards(this.transform.position, player.transform.position, speed * Time.deltaTime);

    //Makes the enemy face the player
    Vector3 scale = transform.localScale;

    if (player.transform.position.x < transform.position.x)
    {
        scale.x = Mathf.Abs(scale.x) * -1 * (flip ? 1 : -1);
    }
    else
    {
        scale.x = Mathf.Abs(scale.x) * (flip ? 1 : -1);
    }

    transform.localScale = scale;
}

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player"))
    {
        playerControllerScript.health -= 2;
    }
}

Player script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AiChase : MonoBehaviour
{
private PlayerController playerControllerScript;
public GameObject player;
public float speed;

private float distance;
public bool flip;

// Start is called before the first frame update
void Start()
{
    playerControllerScript = GameObject.Find("Player").GetComponent<PlayerController>();
}

// Update is called once per frame
void Update()
{
    Vector2 direction = player.transform.position - transform.position;
    direction.Normalize();

    //Moves enemy to player
    transform.position = Vector2.MoveTowards(this.transform.position, player.transform.position, speed * Time.deltaTime);

    //Makes the enemy face the player
    Vector3 scale = transform.localScale;

    if (player.transform.position.x < transform.position.x)
    {
        scale.x = Mathf.Abs(scale.x) * -1 * (flip ? 1 : -1);
    }
    else
    {
        scale.x = Mathf.Abs(scale.x) * (flip ? 1 : -1);
    }

    transform.localScale = scale;
}

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player"))
    {
        playerControllerScript.health -= 2;
    }
}

Please help

If it’s 2d you need to use OnCollisionEnter2d.

Uhh the player script for some reason was the same as enemy this is the REAL player script:
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
public TextMeshProUGUI healthText;
public TextMeshProUGUI gameOverText;
public float health = 20;
float speed = 10f;

// Start is called before the first frame update
void Start()
{
    Time.timeScale = 1.0f;
}

// Update is called once per frame
void Update()
{
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");

    transform.Translate(Vector3.up * verticalInput * speed * Time.deltaTime);
    transform.Translate(Vector3.right * horizontalInput * speed * Time.deltaTime);

    healthText.text = "Health: " + health;

    if (health < 0)
    {
        gameOverText.gameObject.SetActive(true);
        Time.timeScale = 0;
    }
}

}