Performing if loop multiple times to perform attack animation

I am using the following code, which makes the game object look at me, walk towards me and then I change the boolean on the animation to perform an attack animation:

 transform.LookAt(ThePlayer.transform);
            if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out Shot))
            {
                float dist = Vector3.Distance(ThePlayer.transform.position, transform.position);

                if (dist > 2.5f)
                {
                    EnemySpeed = 0.01f;
                    //animation.SetBool("Running", true);
                    transform.position = Vector3.MoveTowards(transform.position, new Vector3(ThePlayer.transform.position.x, transform.position.y, ThePlayer.transform.position.z), EnemySpeed);
                    TargetDistance = Shot.distance;
                    animator.SetBool("Moving", true);
                    animator.SetBool("Attack1Trigger", false);

                    animator.speed = 0.5f;
                    if (TargetDistance < AllowedRange)
                    {

                        if (AttackTrigger == 0)
                        {
                            EnemySpeed = 0.05f;
                            transform.position = Vector3.MoveTowards(transform.position, new Vector3(ThePlayer.transform.position.x, transform.position.y, ThePlayer.transform.position.z), EnemySpeed);


                        }
                        else
                        {
                            EnemySpeed = 0.01f;
                            
                        }
                    }


                }
                else
                {
                    animator.SetBool("Moving", false);
                    animator.SetBool("Attack1Trigger", true);
                    hasAttacked = true;
                }
            }

And then I am calling this to reduce the health of the player:

if(EnemyMove.hasAttacked == true)
            {
                currentHealth = currentHealth - 10;
                healthBar.UpdateBar(currentHealth, maxHealth );
            }

But it seems it is only doing this the once, and staying in the ELSE statement. I have tried to return but that does not work. Is there a way of saying to do this on a loop?

This sounds like a good use for ‘while’ to be utilized.

int i = 0;
while (i < 5) {
    EXECUTE THIS CODE;
    i++;
}

The above will execute the code within until the conditional is false, so in this example it will execute 5 times (0, 1, 2, 3, 4), or you can use this:

while (true) {
    EXECUTE THIS CODE;
    if (condition that you want to stop performing the function is true) {
        break; 
    }
}

In either solution you need to ensure that you can end the while loop.

Also, use this:

currentHealth -= 10;
instead of 
currentHealth = currentHealth - 10;