So my game is a 2D top down movement game and my script does make my enemy attack but it constantly loops the attack animation because I obviously don't know what EXACTLY to put code wise to make the enemy attack when in range of the player to do damage instead of letting him constantly loop. Also i seem to be getting an error when i get close to my enemy as of right now it says
NullReferenceException: Object reference not set to an instance of an object EnemyCombat.Attack () (at Assets/EnemyCombat.cs:36) EnemyCombat.Update () (at Assets/EnemyCombat.cs:25)
Also, Here is the EnemyCombat script
    enemy attausing System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class EnemyCombat : MonoBehaviour
    {
        public Animator animator;
        public Transform AttackPoint;
        public float attackRange = 0.5f;
        public LayerMask enemyLayers;
        public int attackDamage = 5;
        public float attackRate = 2f;
        float nextAttackTime = 0f;
        // Update is called once per frame
        void Update()
        {
            if (Time.time >= nextAttackTime)
            {    
                Attack();
                nextAttackTime = Time.time + 1f / attackRate;    
            }
        }
        void Attack()
        {
            animator.SetTrigger("Attack");
            Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(AttackPoint.position, attackRange, enemyLayers);
            foreach (Collider2D enemy in hitEnemies)
            {
                enemy.GetComponent<Enemy>().TakeDamage(attackDamage);
            }
        }
        void OnDrawGizmosSelected()
        {
            if (AttackPoint == null)
                return;
            Gizmos.DrawWireSphere(AttackPoint.position, attackRange);
        }
    }
 
     
    