void Start() { waveNumber = 1; // First wave is delayed nextWaveSpawnTimer = Time.timeSinceLevelLoad + 15f; // Spawners spawnPositions = new List <Vector3>(); foreach (Transform child in spawnerParent) { spawnPositions.Add(child.position); } nextAttackFrom = spawnPositions[UtilitiesClass .GetRandomArrayIndex(spawnPositions.Count)]; waveCircleTrans.position = nextAttackFrom; }
private IEnumerator SpawnWave() { // Endgame check if (waveNumber <= 35) { currentSpawnRate = betweenSpawns; } else { currentSpawnRate = endgameBetweenSpawns; } // Stop Timer nextWaveSpawnTimer = int.MaxValue; // Spawer for (int i = 0; i < (baseWaveEnemies + waveIncreaser * waveNumber); i++) { randomPositionMultiplier.x = Random.Range(-spaceOffset, spaceOffset); randomPositionMultiplier.y = Random.Range(-spaceOffset, spaceOffset); Enemy.Create(nextAttackFrom + randomPositionMultiplier); yield return(new WaitForSeconds(currentSpawnRate)); } // Cleanup waveNumber++; OnWaveNumberChanged?.Invoke(this, System.EventArgs.Empty); nextAttackFrom = spawnPositions[UtilitiesClass .GetRandomArrayIndex(spawnPositions.Count)]; waveCircleTrans.position = nextAttackFrom; // New timer nextWaveSpawnTimer = Time.timeSinceLevelLoad + Mathf.Clamp(20 - Mathf.FloorToInt(waveNumber / 2), 5, 20); }