Я создаю метеорный поток, который выбирает случайный пустой игровой объект из списка игровых объектов.Я хочу, чтобы один метеор создавался каждые 2.33f.Затем программа должна выбрать новую случайную зону возрождения из списка и повторять до тех пор, пока smallWaveCounter не достигнет 0. Этот код работает, но без остановок создает метеоры, пока smallWaveCounter не достигнет 0, и между экземплярами нет паузы.
Мой вопрос: почему кажется, что IENumerator дает только при первом запуске?Как я могу изменить случайный объект при каждом запуске?
[SerializeField]
private List<GameObject> meteorSpawnSmall = new List<GameObject>();
private int smallCounter;
private void Start()
{
foreach(GameObject spawn in meteorSpawnSmall)//Counts objects in list
{
smallCounter++;
}
}
void Update()
{
if (showerStart == true)
{
StartCoroutine(SmallShower());
if(smallWaveCount <= 0)
{
showerStart = false;
}
}
}
IEnumerator SmallShower()
{
if (smallWaveCount > 0)
{
yield return new WaitForSeconds(smallWaveTimer);// smallWaveTimer = 2.33f
smallPickerNum1 = Random.Range(0, smallCounter - 1); // Needs to randomize each run
smallPickerNum2 = Random.Range(0, smallCounter - 1);
while (smallPickerNum2 == smallPickerNum1)
{
smallPickerNum2 = Random.Range(0, smallCounter - 1);
}
getSpawnZone1 = meteorSpawnSmall[smallPickerNum1];//Grabs the spawnzone from list
getSpawnZone2 = meteorSpawnSmall[smallPickerNum2];//Grabs the 2nd spawn zone from list
Instantiate(smallMeteor, getSpawnZone1.transform.position, Quaternion.identity);
Instantiate(smallMeteor, getSpawnZone2.transform.position, Quaternion.identity);
smallWaveCount--;//smallWaveCount starts at int 10
}
}