상세 컨텐츠

본문 제목

[Unity] 자주쓰는 함수_(5) StartCoroutine

Unity

by 메타샤워 2023. 7. 19. 15:24

본문

유니티에서 아마 시간 지연을 이용해서 무엇인가를 구현할 떄가 있다.

 
아래 코드를 보자 
void OnCollisionEnter(Collision other)
{
    if(other.transform.tag == "trap" || other.transform.tag =="Bullet"){ //tag가 trap이거나 Bullet라면,
        rigidbody.velocity = Vector3.up * jump * 1.5f *Time.deltaTime; //(rigidbody가 적용된 상태에서) up방향으로 잠시 이동.
        gameObject.transform.collider.enabled = false; //게임오브젝트의 collider를 enabled 시킴.
         
        StartCoroutine(Die(0.01f)); //IEnumerator  Die 실행.
}
 
IEnumerator Die(float waitTime)
{ //float형의 waitTime(지금 여기에선 0.01f)을 읽어들임. 0.01초라고 가정했을때 거의 바로 실행됨.
        yield return new WaitForSeconds(1.0f);  // WaitForSeconds(1.0f)초 후에 게임오브젝트 삭제 및 게임카운트 1개 감소.
        Destroy (gameObject);
        --HeartCnt;
}​
응용적으로 사용하자면, 아래와 같이 순차적인 행동을 취하도록 할수 있다.
IEnumerator 함수이름(float waitTime){
yield return new WaitForSeconds(몇초후에 아래 코드를 실행시킬 것인가);
위 시간이 흐르고 실행 시킬 코드.
yield return new...
....
}
 
 

관련글 더보기