Похоже, что он попытается снова выстрелить, только если сможет выстрелить в первый раз, потому что StartCoroutine находится внутри проверки расстояния.
Я думаю, что он должен продолжать пытаться стрелять вечно.
IEnumerator Attack()
{
while(true){
yield return new WaitForSeconds(shootDelay);
if (Vector3.Distance(player.transform.position, bulletspawn.transform.position) < 20)
{
Quaternion rotation = Quaternion.LookRotation(player.transform.position);
bulletspawn.rotation = rotation;
clone = Instantiate(bulletPrefab, bulletspawn.position, bulletspawn.rotation);
clone.AddForce(bulletspawn.transform.right * bulletSpeed);
}
}
}