Пример #1
0
    private void SpawnWave()
    {
        // 웨이브 숫자가 늘어날수록 스폰하는 적의 숫자로 같이 늘려줌
        remainingEnemySpawnAmount = 5 + 3 * waveNumber;     // 이런값들은 외부시트로 관리

        state = eWaveState.SpawningWave;
        waveNumber++;

        OnWaveNumberChanged?.Invoke();
    }
Пример #2
0
    private void Start()
    {
        // 최소 스폰 시작 전 세팅
        state = eWaveState.WaitingToSpawnNextWave;

        // 3 스폰 생성 위치를 랜덤으로 지정해준다
        // spawnPosition = spawnPositionTransform.position;
        SetRandomSpawnPos();

        // 최초 게임 시작 후 3초 이후에 순환 시작
        nextWaveSpawnTimer = 3f;
    }
Пример #3
0
    private void Update()
    {
        switch (state)
        {
        case eWaveState.WaitingToSpawnNextWave:
            nextWaveSpawnTimer -= Time.deltaTime;
            if (nextWaveSpawnTimer < 0f)
            {
                SpawnWave();
            }
            break;

        case eWaveState.SpawningWave:
            /*
             *  스폰 예정된 적의 숫자가 0이 될 때까지 순환됨
             *  nextEnemySpawnTimer 값 세팅은 매번 200ms의 랜덤값을 줌으로써 겹치게 생성하는걸 방지할 수 있음
             */
            if (remainingEnemySpawnAmount > 0)
            {
                nextEnemySpawnTimer -= Time.deltaTime;
                if (nextEnemySpawnTimer < 0f)
                {
                    nextEnemySpawnTimer = UnityEngine.Random.Range(0f, .2f);

                    // 실제 적 생성 후 remainingEnemySpawnAmount 하나씩 감소
                    Enemy.Create(spawnPosition + UtilClass.GetRandomDir() * UnityEngine.Random.Range(0f, 10f));
                    remainingEnemySpawnAmount--;

                    // 스폰 예정된 적을 모두 소진했다면 새로운 스폰위치를 랜덤으로 받고 다시 스폰 대기상태로...
                    if (remainingEnemySpawnAmount <= 0)
                    {
                        state = eWaveState.WaitingToSpawnNextWave;

                        // 3 위치를 지정한 스폰 리스트에서 랜덤으로 가져옴
                        // spawnPosition = spawnPositionTransform.position;
                        SetRandomSpawnPos();

                        nextWaveSpawnTimer = 10f;       // 이런값들은 외부시트로 관리
                    }
                }
            }
            break;
        }
    }