728x90
유니티에서 아마 시간 지연을 이용해서 무언가를 구현할 때 가장 많이 사용했지 않나 싶을 정도로 많이 사용중인 문법이다.
아래 코드를 살펴보자.
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... .... }
728x90
'프로그래밍-1 > Unity3D' 카테고리의 다른 글
Unity3D에서 자주 쓰고 있는 C# 코드 (7) - Instantiate(1) (0) | 2013.08.28 |
---|---|
Unity3D에서 자주 쓰고 있는 C# 코드 (6) - LookAt (1) (0) | 2013.08.27 |
Unity3D에서 자주 쓰고 있는 C# 코드 (4) - OnMouse (1) (0) | 2013.08.19 |
Unity3D에서 자주 쓰고 있는 C# 코드 (3) - GUI , OnGUI , 3D Text (1) (0) | 2013.08.17 |
Unity3D에서 자주 쓰고 있는 C# 코드 (2) - 충돌 관련 부분 (1) (1) | 2013.08.16 |