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; } }
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; } }
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; } }
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); }
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; // обнуляем текущую волну } }
public void DectrementEnemies() { --AmountOfEnemies; EnemyCountChanged.Invoke(); if (AmountOfEnemies == 0 && _spawnerFinished) { LastEnemyDied.Invoke(); } }
private void SetWave(int index) { _curentWave = _waves[index]; EnemyCountChanged?.Invoke(0, 1); }
private void SetWave(int waveNumber) { _currentWave = _waves[waveNumber]; EnemyCountChanged?.Invoke(0, 1); }
public void IncrementEnemies() { ++AmountOfEnemies; EnemyCountChanged.Invoke(); }
public void NextWave() { SetWave(++_currentWaveNumber); _spawned = 0; EnemyCountChanged?.Invoke(_spawned, _currentWave.Count); // при запуске новой волны обнуляем значение события EnemyCountChanged }
public void NextWave() { SetWave(++_currentWaveNumber); _spawnedCount = 0; EnemyCountChanged.Invoke(0, _waves[_currentWaveNumber].Count); }