Unity에서 콜라이더를 가진 게임 오브젝트들이 서로 충돌했다고 했을 때, 게임 오브젝트는 자신이 충돌했다는 사실을 모릅니다. 그 대신 충돌했음을 알려주는 메시지가 충돌한 각 오브젝트에 보내져 해당 오브젝트의 컴포넌트들은 충돌 사실을 알게 되고 충돌에 대응하는 메서드를 실행합니다.
게임 오브젝트와 컴포넌트는 충돌 종류에 따라 OnCollisionEnter 혹은 OnTriggerEnter 메시지를 받습니다.
OnCollision 계열 -> 일반적인 콜라이더를 가진 두 게임 오브젝트가 충돌할 때 자동으로 실행됩니다. 충돌한 두 콜라이더는 서로 통과하지 않고 밀어냅니다.
OnCollisionEnter : 충돌한 순간
OnCollisionStay : 충돌하는 동안
OnCollisionExit : 충돌했다가 분리되는 순간
OnTrigger 계열 -> 충돌한 두 게임 오브젝트의 콜라이더 중 최소 하나가 트리거 콜라이더라면 실행됩니다. 이 경우 두 게임 오브젝트가 충돌했을 때 그대로 통과합니다.
OnTriggerEnter : 충돌한 순간
OnTriggerStay : 충돌하는 동안
OnTriggerExit : 충돌했다가 분리되는 순간
OnTrigger 계열의 메서드가 실행될 때는 트리거 충돌에 상세한 충돌 정보가 필요없기 때문에 충돌한 상대 게임 오브젝트의 콜라이더 컴포넌트가 Collision이 아닌 Collider 타입으로 들어오게 됩니다.
<레트로의 유니티 게임 프로그래밍 에센스 p287>
'Unity' 카테고리의 다른 글
(Unity) 점수 저장, 불러오기 or 최고점수 나타내기 - PlayerPrefs (0) | 2022.08.19 |
---|---|
(Unity) Time.deltaTime (0) | 2022.08.19 |
(Unity) target 삼을 대상 찾아서 할당하기, FindObjectOfType() (0) | 2022.08.19 |
(Unity) GetAxis(), GetKey(), 입력 매니저? (0) | 2022.08.18 |
(Unity) Rigidbody의 AddForce()와 velocity 차이 (0) | 2022.08.18 |