private static void SpawnEnemy(EnemyWaveConfig enemyWaveConfig, EnemyPathing enemyPathing) { var enemy = Instantiate( enemyWaveConfig.EnemyPrefab, enemyWaveConfig.GetWaypoints()[0].position, Quaternion.identity); var enemyComp = enemy.GetComponent <Enemy>(); SetEnemyAttributes(enemyWaveConfig, enemyComp); enemyPathing.AddEnemy(enemy); }
private IEnumerator SpawnEnemiesInWave(EnemyWaveConfig waveConfig) { for (int enemyIndex = 0; enemyIndex < waveConfig.GetNumberOfEnemies(); enemyIndex++) { GameObject enemyInstance = Instantiate(waveConfig.GetEnemyPrefab(), waveConfig.GetWaypoints()[0].transform.position, Quaternion.identity) as GameObject; levelManager.EnemySpawned(); // Set the current wave config on enemy instance enemyInstance.GetComponent <EnemyPath>().SetWaveConfig(waveConfig); yield return(new WaitForSeconds(waveConfig.GetTimeBetweenSpawns())); } }
private IEnumerator SpawnAllEnemiesInEnemyWave(EnemyWaveConfig enemyWaveConfig, EnemyPathing enemyPathing, LevelWaveConfig currentLevelWave, bool last) { yield return(new WaitForSeconds(enemyWaveConfig.SpawnDelay)); do { for (var i = 0; i < enemyWaveConfig.NumberOfEnemies; i++) { SpawnEnemy(enemyWaveConfig, enemyPathing); yield return(new WaitForSeconds(Random.Range(enemyWaveConfig.MinTimeBetweenSpawns, enemyWaveConfig.MaxTimeBetweenSpawns))); } } while (enemyWaveConfig.ContinuousSpawning && (currentLevelWave.WaveSpawning || FindObjectsOfType <Enemy>().Length > 0)); if (last) { currentLevelWave.WaveSpawning = false; } }
private static void SetEnemyAttributes(EnemyWaveConfig enemyWaveConfig, Enemy enemyComp) { if (enemyWaveConfig.Health != 0) { enemyComp.Health = enemyWaveConfig.Health; } if (enemyWaveConfig.MoveSpeed != 0) { enemyComp.MoveSpeed = enemyWaveConfig.MoveSpeed; } if (enemyWaveConfig.ProjectileDamage != 0) { enemyComp.ProjectileDamage = enemyWaveConfig.ProjectileDamage; } if (enemyWaveConfig.CollisionDamage != 0) { enemyComp.CollisionDamage = enemyWaveConfig.CollisionDamage; } if (enemyWaveConfig.ProjectileSpeed != 0) { enemyComp.ProjectileSpeed = enemyWaveConfig.ProjectileSpeed; } if (enemyWaveConfig.MinTimeBetweenShots != 0) { enemyComp.MinTimeBetweenShots = enemyWaveConfig.MinTimeBetweenShots; } if (enemyWaveConfig.MaxTimeBetweenShots != 0) { enemyComp.MaxTimeBetweenShots = enemyWaveConfig.MaxTimeBetweenShots; } if (enemyWaveConfig.ShootChance != 0) { enemyComp.ShootChance = enemyWaveConfig.ShootChance; } if (enemyWaveConfig.ScoreToGive != 0) { enemyComp.ScoreToGive = enemyWaveConfig.ScoreToGive; } }
public void SetEnemyWaveConfig(EnemyWaveConfig enemyWaveConfig) { this.enemyWaveConfig = enemyWaveConfig; waypoints = enemyWaveConfig.GetWaypoints(); }