Programming/Unity

[Unity] 콜라이더 (Collider)

lingk 2021. 1. 11. 17:04

콜라이더 (Collider)

: 물리 충돌 처리를 위한 오브젝트의 형태물리 충돌 처리를 위한 오브젝트의 형태. 물리적 표면 존재

 

Trigger

👉 충돌한 물체를 밀어내는 물리적 표면이 없음

👉 다른 일반 콜라이더와 겹치거나 서로를 뚫고 지나갈 수는 있지만 충돌 자체는 감지

 

Colider의 Is Trigger 항목을 체크하여 사용

 

충돌한 두 게임 오브젝트의 콜라이더 중 최소 하나가 트리거 콜라이더라면 자동으로 실행된다. OnTrigger 계열의 메서드가 실행될 때는 메서드 입력으로 충돌한 상대방 게임 오브젝트의 콜라이더 컴포넌트가 Collider 타입으로 들어온다.

// 충돌한 순간
void OnTriggerEnter(Collider other){}

// 충돌하는 동안
void OnTriggerStay(Collider other){}

//충돌했다가 분리되는 순간
void OnTriggerExit(Collider other){}

자신이 트리거 콜라이더가 아니어도 충돌한 상대방 게임 오브젝트의 콜라이더가 트리거 콜라이더면 자신과 상대방 모두 OnCollision이 아닌 OnTrigger계열 충돌 이벤트 메서드가 실행된다.

 

 

Collision

 

일반적인 콜라이더를 가진 두 게임 오브젝트가 충돌할 때 자동으로 실행된다. 충돌한 두 콜라이더는 서로 통과하지 않고 밀어낸다. OnCollision 계열 메서드가 실행될 때는 메서드 입력으로 충돌 관련 정보가 Collision타입으로 들어온다.

// 충돌한 순간
void OnCollisionEnter(Collision collision){}

// 충돌하는 동안
void OnCollisionStay(Collision collision){}

//충돌했다가 분리되는 순간
void OnCollisionrExit(Collision collision){}

충돌할 오브젝트들이 Rigidbody를 가지고 있다면 오브젝트 모두 is Trigger은 언체크 되어있어야하고, 최소한 하나의 오브젝트는 is Kinematic이 꺼져있어야 한다.

 

❗️ Collision 타입은 충돌 관련 정보를 담아두는 단순한 정보 컨테이너이다. collision을 통해 충돌한 상대방 게임오브젝트, 충돌 지점, 충돌 표면의 방향 등을 알 수 있다 ❗️

 

참고 : 레트로의 유니티 게임 프로그래밍 에센스
반응형

'Programming > Unity' 카테고리의 다른 글

[유니티] 캐릭터 애니메이션 루프  (0) 2021.02.10
[유니티] 카메라 위치 이동  (0) 2021.02.03
[유니티] 관성에 의한 쓰러짐  (4) 2021.02.01
[Unity] 코루틴  (2) 2021.01.19
[Unity] 오브젝트 라이프사이클  (0) 2020.12.23