AI gun aim time

I have this script that lets enemy AI shoot instantly whenever they are in range with the player, the problem is, I dont want them to instantly shoot but take their time to aim like a real life person aiming a gun

public override void Awake()
{
    base.Awake();
}
public override void Attack()
{
    base.Attack();
    if (!weaponRanged.canAttack)
        return;
    if (weaponRanged.isReloading)
        return;
    if (weaponRanged.currentAmmo <= 0)
    {
        StartCoroutine(weaponRanged.Reload(weaponRanged.reloadTime));
        return;
    }
    else
    {
        weaponRanged.currentAmmo--;
        GameObject bullet = Instantiate(weaponRanged.bulletPrefab, weaponRanged.attackPoint.position, weaponRanged.attackPoint.rotation);
        bullet.GetComponent<bulletEnemy2>().creator = gameObject;
    }
}

this is the base.Attack();

public virtual void Attack()
{
    if (Time.time >= nextTimeToFire)
    {
        nextTimeToFire = Time.time + 1f / attackSpeed;
        canAttack = true;
    }
    else
    {
        canAttack = false;
    }
}

You could make an IEnumerator that waits for seconds before it can fire:

    IEnumerator WaitToShoot{
        animator.Play("Aiming Animation");
        yield return new WaitForSeconds(4); 
        canFire = true;
    }

as for making it aim, you could create an animation that just includes the arms and gun.

oh and the timer should only be before it shoots, not in between shots