Unity

(Unity) 게임 오브젝트 간의 충돌 - OnCollision, OnTrigger

Janny_ 2022. 8. 19. 08:43

Unity에서 콜라이더를 가진 게임 오브젝트들이 서로 충돌했다고 했을 때, 게임 오브젝트는 자신이 충돌했다는 사실을 모릅니다. 그 대신 충돌했음을 알려주는 메시지가 충돌한 각 오브젝트에 보내져 해당 오브젝트의 컴포넌트들은 충돌 사실을 알게 되고 충돌에 대응하는 메서드를 실행합니다.

 

게임 오브젝트와 컴포넌트는 충돌 종류에 따라 OnCollisionEnter 혹은 OnTriggerEnter 메시지를 받습니다.

 

OnCollision 계열 -> 일반적인 콜라이더를 가진 두 게임 오브젝트가 충돌할 때 자동으로 실행됩니다. 충돌한 두 콜라이더는 서로 통과하지 않고 밀어냅니다.

OnCollisionEnter : 충돌한 순간

OnCollisionStay : 충돌하는 동안

OnCollisionExit : 충돌했다가 분리되는 순간

 

OnTrigger 계열 -> 충돌한 두 게임 오브젝트의 콜라이더 중 최소 하나가 트리거 콜라이더라면 실행됩니다. 이 경우 두 게임 오브젝트가 충돌했을 때 그대로 통과합니다.

OnTriggerEnter : 충돌한 순간

OnTriggerStay : 충돌하는 동안

OnTriggerExit : 충돌했다가 분리되는 순간

 

OnTrigger 계열의 메서드가 실행될 때는 트리거 충돌에 상세한 충돌 정보가 필요없기 때문에 충돌한 상대 게임 오브젝트의 콜라이더 컴포넌트가 Collision이 아닌 Collider 타입으로 들어오게 됩니다.

 

<레트로의 유니티 게임 프로그래밍 에센스 p287>