/// <summary> /// Старт стадии в волне /// </summary> /// <param name="waveEnemy"></param> /// <returns></returns> private IEnumerator StartStages(WaveEnemy waveEnemy) { for (int i = 0; i < waveEnemy.listStageInWave.Count; i++) { WaveStage waveStage = waveEnemy.listStageInWave[i]; StartCoroutine(StartShowEnemy(waveStage)); yield return(new WaitForSeconds(waveStage.delayStartNextStage)); } }
/// <summary> /// Появления противников стадии /// </summary> /// <param name="waveStage"></param> /// <returns></returns> private IEnumerator StartShowEnemy(WaveStage waveStage) { int countEnemy = Random.Range(waveStage.minCountEnemyInStage, waveStage.maxCountEnemyInStage); for (int i = 0; i < countEnemy; i++) { GameObject enemyPref = PoolManager.GetObject(waveStage.indexEnemyPrefabInPoll, transform.position, Quaternion.identity); EnemyActor enemyActor = enemyPref.GetComponent <EnemyActor>(); bool statusAddEnemy = enemyActor.SetUpgradeLVL(waveStage.indexLavelPowerEnemy, _pathMovingCollider.ListPositionPathMoving.Head); if (statusAddEnemy) { countCreateEnemy++; } yield return(new WaitForSeconds(waveStage.delayShowOneEnemy)); if (isLastWave && (i == countEnemy - 1)) { isFinishSpawn = true; } } }