コード例 #1
0
ファイル: Spawner.cs プロジェクト: Dimidril/SwampAttack
    private void Update()
    {
        if (_curentWave == null || _player == null)
        {
            return;
        }

        _timeAfterLastSpawn += Time.deltaTime;

        if (_timeAfterLastSpawn >= _curentWave.Delay)
        {
            InstantiateEnemy();
            _spawned++;
            _timeAfterLastSpawn = 0;
            EnemyCountChanged?.Invoke(_spawned, _curentWave.Count);
        }

        if (_curentWave.Count <= _spawned)
        {
            if (_waves.Count > _curentWaveNumber + 1)
            {
                AllEnemySpawned?.Invoke();
            }

            _curentWave = null;
        }
    }
コード例 #2
0
    private void Update()
    {
        if (_currentWave == null)
        {
            return;
        }

        _lastSpawnTime += Time.deltaTime;

        if (_lastSpawnTime >= _currentWave.Delay)
        {
            InstantiateEnemy();
            _spawned++;
            _lastSpawnTime = 0;
            EnemyCountChanged?.Invoke(_spawned, _currentWave.Count);
        }

        if (_currentWave.Count <= _spawned)
        {
            if (_waves.Count > _currentWaveNumber + 1)
            {
                AllEnemiesSpawned?.Invoke();
            }

            _currentWave = null;
        }
    }
コード例 #3
0
    private void Update()
    {
        if (_currentWave == null)
        {
            return;
        }

        _timeAfterLastSpawn += Time.deltaTime;

        if (_timeAfterLastSpawn >= _currentWave.Delay && _spawned < _currentWave.Count)
        {
            InstantiateEnemy(_currentWave.Template);
            _spawned++;
            _timeAfterLastSpawn = 0;
            EnemyCountChanged?.Invoke(_spawned, _currentWave.Count);
        }

        if (_currentWave.Count <= _spawned && _timeAfterLastSpawn >= _currentWave.Delay)
        {
            InstantiateEnemy(_currentWave.BossTemplate);
            _spawned++;
            EnemyCountChanged?.Invoke(_spawned, _currentWave.Count + 1);

            if (_waves.Count > _currentWaveNumber + 1)
            {
                AllEnemiesSpawned?.Invoke();
            }

            _currentWave = null;
        }
    }
コード例 #4
0
    private void Update()
    {
        if (_currentWave == null)
        {
            return;
        }

        if (_spawned == 0)
        {
            StartCoroutine(EnemyInstantiator());
        }

        if (_currentWave.Count == _spawned)
        {
            StopCoroutine(EnemyInstantiator());
            if (_waves.Count > _currentWaveNumber + 1)
            {
                AllEnemySpawned?.Invoke();

                _timeAfterLastWave += Time.deltaTime;
                if (_timeAfterLastWave >= _currentWave.DelayAfterWave)
                {
                    NextWave();
                }
            }
            else
            {
                _currentWave = null;
            }
        }
        EnemyCountChanged?.Invoke(_totalEnemySpawned, _totalEnemyCount);
    }
コード例 #5
0
ファイル: Spawner.cs プロジェクト: Acnug1/SwampAttack
    private void Update()
    {
        if (_currentWave == null) // если волны кончились или отсутствуют
        {
            return;               // выходим из update
        }
        _timeAfterLastSpawn += Time.deltaTime;

        if (_timeAfterLastSpawn >= _currentWave.Delay)
        {
            InstantiateEnemy();
            _spawned++;                                              // увеличиваем счетчик количества врагов на единицу
            _enemyCount++;
            ChangeEnemyCount(_enemyCount);                           // вызываем метод ChangeEnemyCount и передаем количество заспавненных врагов

            _timeAfterLastSpawn = 0;                                 // сбрасываем наш таймер

            EnemyCountChanged?.Invoke(_spawned, _currentWave.Count); // передаем в обработчик события количество заспавнененных врагов и общее количество врагов в волне
        }

        if (_currentWave.Count <= _spawned)            // если количество врагов меньше или равно тому, что мы заспаунили
        {
            if (_waves.Count > _currentWaveNumber + 1) // Если следующая волна существует (т.е. волн хватает)
            {
                AllEnemySpawned?.Invoke();             // Вызываем событие "все враги заспавнились" после окончания предыдущей волны
            }
            _currentWave = null;                       // обнуляем текущую волну
        }
    }
コード例 #6
0
 public void DectrementEnemies()
 {
     --AmountOfEnemies;
     EnemyCountChanged.Invoke();
     if (AmountOfEnemies == 0 && _spawnerFinished)
     {
         LastEnemyDied.Invoke();
     }
 }
コード例 #7
0
ファイル: Spawner.cs プロジェクト: Dimidril/SwampAttack
 private void SetWave(int index)
 {
     _curentWave = _waves[index];
     EnemyCountChanged?.Invoke(0, 1);
 }
コード例 #8
0
 private void SetWave(int waveNumber)
 {
     _currentWave = _waves[waveNumber];
     EnemyCountChanged?.Invoke(0, 1);
 }
コード例 #9
0
 public void IncrementEnemies()
 {
     ++AmountOfEnemies;
     EnemyCountChanged.Invoke();
 }
コード例 #10
0
ファイル: Spawner.cs プロジェクト: Acnug1/SwampAttack
 public void NextWave()
 {
     SetWave(++_currentWaveNumber);
     _spawned = 0;
     EnemyCountChanged?.Invoke(_spawned, _currentWave.Count); // при запуске новой волны обнуляем значение события EnemyCountChanged
 }
コード例 #11
0
 public void NextWave()
 {
     SetWave(++_currentWaveNumber);
     _spawnedCount = 0;
     EnemyCountChanged.Invoke(0, _waves[_currentWaveNumber].Count);
 }