Unity3D/Trigger

Unity 3D Trigger example

Soul-Learner 2014. 3. 1. 12:44

유니티 3D 에서 Trigger 를 사용하는 예제


유니티 3D의 Trigger 는 Collider 콤포넌트의 Is Trigger 항목을 체크하면 Collider 가 Trigger 로써 작동하게 된다.

Collider 가 설정된 오브젝트는 다른 오브젝트와 충돌했을 때 서로 관통하지 못하지만 Trigger 로써 작동하면 Collider 가 설정되지 않은 것과 같은 효과가 있어서 다른 오브젝트가 관통할 수 있고 관통한 오브젝트에 대한 정보도 얻을 수 있다.


즉, Trigger 는 충돌탐지는 가능하지만 다른 오브젝트가 지나가는 것을 막지는 않는다는 점에서 Collider와는 기능상 차이를 보인다.

Trigger 는 무언가를 뚫고 지나가야 하는 총알과 같은 성질을 지닌 오브젝트를 구현할 때 유용하게 사용된다.


Trigger를 테스트하기 위해 아래 그림과 같이 Scene 뷰에 Plane 을 생성하고 그 위에 Cube 를 올려놓고 Cube 의 상부 공간에 구(Sphere)를 생성해 놓은 상태에서 Play 모드로 실행해보면 공중에 떠 있던 구가 아래로 떨어지면서 Cube의 상부에 충돌하는 것을 확인할 수 있다. 아직 Trigger를 설정하지 않았기 때문에 Collider 가 작동하여 Cube 상부에 구가 놓이게 되는 것이다.




다음 그림은 공중에 있던 구(Sphere)가 낙하하여 Cube 의 상부에 충돌하고 멈추는 장면




위와 동일한 환경에서 Hierarchy 뷰의 Sphere 를 선택하고 Inspector 뷰의 Sphere Collider 콤포넌트 Is Trigger 항목에 체크하고 다시 실행 테스트하면 이번에는 구가 낙하하면서 큐브를 관통하고 지나가는 것을 확인할 수 있다



구가 다른 오브젝트를 관통하여 지나갈 때 어떤 오브젝트들을 지나고 있는지 확인하려면 OnTriggerEnter, OnTriggerExit 함수를 오버라이드하면 된다.

다음과 같은 스크립트를 작성하고 Sphere 안으로 드래그한 후에 그 결과를 확인해보자.


#pragma strict


function Start () {

}


function Update () {

}


function OnTriggerEnter(collider:Collider) {

 print(collider.transform.name+" 통과 중");

}


function OnTriggerExit(collider:Collider) {

 print(collider.transform.name+" 통과 완료");

}