Beispiel #1
0
    // 웨이브 실행
    IEnumerator RunWaves()
    {
        while (enemyGenerator.GetCurWave() < _maxWave)
        {
            _playerExplore(enemyGenerator.GetCurSpawnPoint().position);

            yield return(new WaitForSeconds(_waveStartDelayTime));

            ChangeWave();

            yield return(new WaitForSeconds(_spawnRunTime));

            AddTarget();

            yield return(new WaitUntil(IsWaveFinished));

            // 적 밖에 남지 않으면 스테이지 실패이므로 break;
            if (_charList.TrueForAll(IsEnemy))
            {
                break;
            }

            // 마지막 웨이브에서는 스테이지 클리어를 띄우므로 웨이브 클리어 텍스트를 띄우지 않음
            if (enemyGenerator.GetCurWave() < _maxWave - 1)
            {
                StartCoroutine(WaveClearAnim());
            }

            followCam.SetMainEnemy(null);
            followCam.Unzoom();
            enemyGenerator.AddWave();
        }

        // 웨이브가 모두 진행된 채로 게임이 끝나면 클리어
        if (enemyGenerator.GetCurWave() == _maxWave)
        {
            _stageClearText.SetActive(true);
            _charProfileUI.SetActive(false);

            _playerClear();
        }

        yield return(new WaitForSeconds(2.0f));

        SceneController.Instance.SwitchScene(SceneName.TitleScene, SceneSwitchType.Curtain, 0, 1);
        InfoManager.Instance.playerIDList.Clear();
    }