히가츠류의 보금자리

코루틴(Coroutine)을 이용하여 1초 마다 오브젝트 소환 본문

Programming/Unity 2D

코루틴(Coroutine)을 이용하여 1초 마다 오브젝트 소환

HiGaTsu Ryu 2020. 6. 11. 20:34

 

 

오늘은 코루틴(Coroutine)을 이용해서 1초 마다 일반 고양이 오브젝트(normalCat Object)를 소환&스폰(Spawn)하는 작업을 진행했다.

 

 

전체적으로 봤을 때

 

 

yield return new WaitForSeconds()과 yield return new WaitForSecondsRealtime()의 차이는

WaitForSeconds()는 게임 시간이 0.5배속이나 2배속되는 것에 영향을 받아 느려졌다 빨라졌다 할 수 있고,

WaitForSecondsRealtime()는 게임 배속에 관련없이 무조건적으로 현실시간을 따라간다는 것이다. (배속X)

 

 

맨 밑에 new Vector3 (0, 0);에는 0부분에 각각 "x좌표"와 "y좌표"를 넣으면 된다.

나는 아직 소환 범위를 정하지 않아서 0,0으로 넣어뒀다.

 

혹시 위치를 (x= 0~100, y= 0~300) 등으로 정하고 싶다면

랜덤 함수를 사용하여

new Vector3 (Random.range(0,101) , Random.range(0,301));     //0~100, 0~300

로 설정하면 된다.

 

 

[사용한 함수(Function)와 형식(Type) 또는 ]

 

  • 오브젝트 생성 (Object Create)

    • Instantiate(Object);  //형식 다양 //Instantiate(Object, Transform);  //Instantiate(Object, Vector3, Quaternion); 

    • void normalCatSpawn() 
          { 
              GameObject nowCat = Instantiate(normalCatObject);    //소환해서 GameObject 변수에 담아둠.
              nowCat.transform.position = new Vector3(x, y);           //x와 y값을 랜덤으로 설정해주면 됨.
          }

  • 코루틴(Coroutine) 사용

    • StartCoroutine(CatSpawn());

    • IEnumerator CatSpawn() 

          { 

              normalCatSpawn(); //일반 고양이를 랜덤적으로 소환하는 함수.

              yield return new WaitForSecondsRealtime(1.0f); 

          }

  • 오브젝트 생성 후 포지션 설정 

    • myCat.transform.position = new Vector3(x,y);

    • myCat.transform.rotation = new Quaternion(x,y,z,w);

 

Comments