private IEnumerator RespawnEnemy(float time) { yield return(new WaitForSeconds(time)); if (freeEnemyRespawnPoints.Count > 0 && enemiesInThisWave < enemiesInWave) { int index = Random.Range(0, freeEnemyRespawnPoints.Count); EnemyRespawnPoint point = freeEnemyRespawnPoints[index]; NormalEnemyAI normalEnemyAI = Instantiate(enemyPrefab, enemyRespawnPointsTransform, false).GetComponent <NormalEnemyAI>(); normalEnemyAI.transform.localPosition = point.positionInWorld; GameObject enemyOnRadar = Instantiate(enemyOnRadarPrefab, radarTransform, false); enemyOnRadar.transform.localPosition = point.positionOnRadar; enemies.Add(normalEnemyAI); normalEnemyAI.Init(enemyOnRadar, point); freeEnemyRespawnPoints.Remove(point); takenEnemyRespawnPoints.Add(point); if (maxTimeBetweenEnemiesRespawn > minTimeBetweenEnemiesRespawn + 2) { maxTimeBetweenEnemiesRespawn--; } enemiesInThisWave++; } StartCoroutine(RespawnEnemy(Random.Range(minTimeBetweenEnemiesRespawn, maxTimeBetweenEnemiesRespawn))); }
public void Init(GameObject enemyOnRadar, EnemyRespawnPoint point) { Init(); normalEnemy = GetComponent <NormalEnemy>(); normalEnemy.Init(enemyOnRadar, point); }
public void Init(GameObject enemyOnRadar, EnemyRespawnPoint respawnPoint) { Init(enemyOnRadar); this.respawnPoint = respawnPoint; }
public void DeathOfEnemy(EnemyRespawnPoint respawnPoint) { takenEnemyRespawnPoints.Remove(respawnPoint); freeEnemyRespawnPoints.Add(respawnPoint); }