Пример #1
0
    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)));
    }
Пример #2
0
    public void Init(GameObject enemyOnRadar, EnemyRespawnPoint point)
    {
        Init();

        normalEnemy = GetComponent <NormalEnemy>();
        normalEnemy.Init(enemyOnRadar, point);
    }
Пример #3
0
    public void Init(GameObject enemyOnRadar, EnemyRespawnPoint respawnPoint)
    {
        Init(enemyOnRadar);

        this.respawnPoint = respawnPoint;
    }
Пример #4
0
 public void DeathOfEnemy(EnemyRespawnPoint respawnPoint)
 {
     takenEnemyRespawnPoints.Remove(respawnPoint);
     freeEnemyRespawnPoints.Add(respawnPoint);
 }