void SpawnEnemy(WaveBlueprint wave, float num, string index) { switch (index) { case "0": for (int i = 0; i < num; i++) { int spawnPos = Random.Range(0, xSize - 1); Instantiate(wave.enemy, spawnArea[spawnPos], Quaternion.identity); numEnemiesAlive++; } break; case "1": for (int i = 0; i < num; i++) { int spawnPos = Random.Range(0, xSize - 1); Instantiate(wave.enemyTank, spawnArea[spawnPos], Quaternion.identity); numEnemiesAlive++; } break; case "2": for (int i = 0; i < num; i++) { int spawnPos = Random.Range(0, xSize - 1); Instantiate(wave.enemySpeedster, spawnArea[spawnPos], Quaternion.identity); numEnemiesAlive++; } break; } }
IEnumerator SpawnWave() { isWaveSpawning = true; WaveBlueprint wave = waves[waveIndex]; spawnAmount[0] = wave.numberOfGenerics; spawnAmount[1] = wave.numberOfTanks; spawnAmount[2] = wave.numberOfSpeedsters; for (int i = 0; i < spawnAmount.Length; i++) { SpawnEnemy(wave, spawnAmount[i], i.ToString()); } yield return(null); //wave gold bonus, scales with difficulty PlayerStats.gainWaveGold(2 + 2 * waveIndex); isWaveSpawning = false; isPlayClicked = false; waveIndex++; if (waveIndex >= waves.Length && NoEnemiesExists()) { //win SceneManager.LoadScene("Victory"); print("you completed this level"); yield break; } }
IEnumerator Spawn() { PlayerStats.Rounds++; WaveBlueprint wave = waves[waveIndex]; EnemiesAlive = wave.count; for (int i = 0; i < wave.count; i++) { SpawnEnemy(wave.enemy); //Задержка перед созданием следующего противника, без зависания основного потока yield return(new WaitForSeconds(1f / wave.rate)); } waveIndex++; }