오늘은 Spawning system을 코루틴을 이용해서 구현해봤어(책 실습따라가는 중)


책 목표는 Enemy가 띄엄띄엄 나오게 만들어야 해


    private IEnumerator WavesSpawner()
    {
        Debug.Log("코루틴시작");
        // 각 웨이브마다
        for (int i = 0; i         {
            // PandaSpawner가 하나의 웨이브를 코루틴하게 하자
            // 코루틴이 완료되면 웨이브도 종료해 코루틴이 계속되도록 한다
            yield return PandaSpawner();
            // 각 웨이브마다 생성되는 판다 수를 증가시킨다
            numberOfPandasPerWave += increment;
        }
        // 플레이어가 모든 웨이브를 이겨내면, '승리' 모드로 GameOver 함수를 호출한다
        GameOver(true);
    }

    private IEnumerator PandaSpawner()
    {
        // 이 웨이브에서 물리쳐야만 하는 수로 초기화한다.
        numberOfPandasToDefeat = numberOfPandasPerWave;
        // 순차적으로 판다를 스폰한다.
        for(int i=0; i         {
            spawner = GameObject.Find("Spawning Spot").transform;
            Debug.Log("판다웨이브시작");
            // 스포너 위치에 판다를 스폰 또는 인스턴스화한다
            Instantiate(PandaPrefab, spawner.position, Quaternion.identity);

            // 남아 있는 스폰돼야 하는 판다 수와 난수 모두에 영향을 받는 대기 시간
            float ratio = (i * 1f) / (numberOfPandasPerWave - 1);
            float timeToWait = Mathf.Lerp(3f, 5f, ratio) + Random.Range(0f, 2f);
            yield return new WaitForSeconds(timeToWait);
        }
        // 판다가 전부 스폰되면 플레이어가 이들 전부를 없앨 때까지
        // (또는 게임 오버 조건이 발생되기 전까지) 대기한다
        yield return new WaitUntil(() => numberOfPandasToDefeat <= 0);
    }



마지막 yield에서 () => 가 뭔뜻인지 모르겠네


하여튼 이거 구현하느라 2시간걸렸네 ㄷㄷ

책에서 StartCorutine 안알려줘서 왜 안되나했네 ㅋㅋ