private void FixedUpdate() { if (!started) { return; } if (wait) { //Debug.Log("Waiting to start spawning"); if (Time.fixedTime - waitingStarted > currentBatch.waitTime) { wait = false; } } else if (enemiesSpawned < currentBatch.enemyCount) { //Debug.Log("Spawning now " + Time.fixedTime); if (Time.fixedTime - lastSpawned > currentBatch.spawnTime) { GameObject enemy = pool.ActivateObject(spawnPoint.position); EnemyNavigation nav = enemy.GetComponent <EnemyNavigation>(); Goblin gob = enemy.GetComponent <Goblin>(); if (nav != null) { nav.SetTarget(baseTower); } if (gob != null) { gob.Initialize(); } lastSpawned = Time.fixedTime; enemiesSpawned++; } } else { currentBatchIndex++; if (wave.batches.Count > currentBatchIndex) { currentBatch = wave.batches[currentBatchIndex]; GameObject prefab = enemyConfig.Enemies.Where(x => x.type == currentBatch.enemyType).First().prefab; pool = ObjectPooler.GetPool(prefab); wait = true; waitingStarted = Time.fixedTime; enemiesSpawned = 0; } else { started = false; } } }