[Unity3D] 충돌처리. Trigger와 Collision
Unity- 충돌처리를 위한 조건
우선 충돌이 일어나기 위해서는 두 GameObject가 모두 Collider를 가지고 있어야 하며 둘 중 하나는 Rigidbody를 가지고 있어야 한다.
두 GameObject중 하나만 움직인다면 움직이는 GameObject가 Rigidbody를 가지고 있어야 한다.
위 그림은 Collider가 잘 보이게 하기 위해 GameObject보다 크기를 약간 키워 보았다. 위에서 보이는 초록색 부분이 Collider로 실제로 충돌을 감지하는 영역이다.
Unity에서 제공하는 Object들에는 기본적으로 Collider가 들어가 있으며 Box Collider, Sphere Collider, Capsule Collider 등이 있다. 만약 다른 Model을 불러와 작업한다면 Model에 알맞게 Collider를 설정해 주어야 올바른 충돌처리를 할 수 있다.
- Trigger
Trigger는 GameObject간의 물리적 연산을 하지 않고 충돌을 감지할 수 있다. 즉, 두 GameObject가 접촉했을때 서로 튕겨 나가지않고 그냥 통과하게 된다.
Trigger를 쓰기 위해서는 해당 Collider의 Is Trigger 항목을 체크해야 한다.
다음으로 스크립트에서 함수로 충돌 이벤트를 처리할 수 있다.
1 2 3 | void OnTriggerEnter(Collider col) { } void OnTriggerStay(Collider col) { } void OnTriggerExit(Collider col) { } |
1 2 3 | void OnCollisionEnter(Collision col) { } void OnCollisionStay(Collision col) { } void OnCollisionExit(Collision col) { } |
Tag 속성은 위와 같이 Inspector창에서 해당 GameObject의 Tag를 지정해 줄 수 있으며 Add Tag에서 새로운 Tag를 만들 수도 있다.
1 2 3 4 5 6 | void OnTriggerEnter(Collider col) { if (col.tag == "Enemy") { // event. } } |
'Unity' 카테고리의 다른 글
[Unity3D] Coroutine (0) | 2015.11.28 |
---|---|
[Unity3D] 이동, 회전, 크기변경 정리 (5) | 2015.11.23 |
[Unity3D] GameObject 생성과 삭제. Instantiate와 Destroy (1) | 2015.11.23 |
[Unity3D] Prefab (0) | 2015.11.20 |
[Unity3D] 다른 오브젝트의 함수를 호출하는 방법들 (0) | 2015.11.11 |