Всем привет, подскажите пожалуйста почему после добавления этого скрипта враг спавнится не после уничтожения 10 врагов а просто бесконечно каждые 1-2 секунды появляются 10 врагов, независимо от уничтожения, даже если не убито ни одного врага?
Вот срипт
Код
[b]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour {
// Создание переменной «враг»
public Transform enemy;
// Временные промежутки между событиями, кол-во врагов
public float timeBeforeSpawning = 1.5f;
public float timeBetweenEnemies = 0.25f;
public float timeBeforeWaves = 2.0f;
public int enemiesPerWave = 10;
private int currentNumberOfEnemies = 0;
// Процедура уменьшения количества врагов в переменной
public void KilledEnemy()
{
currentNumberOfEnemies--;
}
// Use this for initialization
void Start () {
StartCoroutine(SpawnEnemies());
}
// Update is called once per frame
void Update () {
}
// Появление волн врагов
IEnumerator SpawnEnemies()
{
// Начальная задержка перед первым появлением врагов
yield return new WaitForSeconds(timeBeforeSpawning);
// Когда таймер истекает, начинаем производить эти действия
while (true)
{
// Не создавать новых врагов, пока не уничтожены старые
if (currentNumberOfEnemies <= 0)
{
float randDirection;
float randDistance;
// Создать 10 врагов в случайных местах за экраном
for (int i = 0; i < enemiesPerWave; i++)
{
// Задаём случайные переменные для расстояния и направления
randDistance = Random.Range(5, 25);
randDirection = Random.Range(0, 45);
// Используем переменные для задания координат появления врага
float posX = this.transform.position.x + (Mathf.Cos((randDirection) * Mathf.Deg2Rad) * randDistance);
float posY = this.transform.position.y + (Mathf.Sin((randDirection) * Mathf.Deg2Rad) * randDistance);
// Создаём врага на заданных координатах
Instantiate(enemy, new Vector3(posX, posY, 0), this.transform.rotation);
currentNumberOfEnemies++;
yield return new WaitForSeconds(timeBetweenEnemies);
}
}
// Ожидание до следующей проверки
yield return new WaitForSeconds(timeBeforeWaves);
}
}
}[/b]