오늘은 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 안알려줘서 왜 안되나했네 ㅋㅋ
람다식&익명함수 라고 함수를 짜는걸 저걸로 줄인거여, numberOfPandasToDefeat 을 리턴할 함수 를 임시로 만들어서 바로 넣어준거라고 보면됨.
저거 그냥 비교식인데 뭘리턴해?
너는 ()=> 이 그냥 비교식인가보구나?
그냥 numberOf어쩌고가 0보다 작거나 같을때까지 기다리라는거임
람다식안에 들어가 있는걸 말하는건데 뭔개소리하냐ㅋㅋ
글쓴이는 람다식이랑 익명 함수에 대해서 질문 한건데, 그 반환 값 가지고 싸우자고 하는 건 뭔 소리냐?
니가 리턴할함수를 임시로 만든거라며ㅋㅋ
뇌절아... 익명 함수가 함수 만들어서 바로 넣는 거 잖아
돌대갈아 니가 numberOfPandsToDepeat을 리턴할 함수라며ㅋㅋㅋ
병신아 그만싸워 니가 처음에 헛다리 짚은거잖아 존나 안지려고 발악하네
히익;;;싸우지마세여