-
[Unity] 충돌 처리 Collision / Trigger의 정리Unity 2022. 7. 22. 16:22
충돌 발생 조건
충돌이 일어나기 위해서는, 두 오브젝트가 모두 Collider를 가지고 있어야 하며,
둘 중 하나 이상은 RigidBody 컴퍼넌트를 가지고 있어야 한다.
두개의 오브젝트 중 하나만 움직인다면 움직이는 오브젝트가RigidBody를 가지고 있어야 한다.
Trigger
Trigger는 오브젝트간의 물리적 연산을 하지 않고 충돌을 감지할 수 있다.
쉽게말해, 두 오브젝트가 접촉했을 때 서로 튕겨나가지 않고 그냥 통과하게 된다.
Trigger를 쓰기 위해서는 해당 Collider의 Is Trigger 항목을 체크해야 한다.
Trigger의 종류
- Void OnTriggerEnter (Collider c) : 충돌이 시작되는 순간 호출
- Void OnTriggerStay (Collider c) : 충돌이 되고 있을 때 매 프레임 마다 호출
- Void OnTriiggerExit (Collider c) : 충돌이 끝날 때 호출
Collision
Collision은 Trigger와 다르게 물리적인 연산을 하며 충돌을 감지한다.
Collision 처리를 하려면 둘 중 하나에는 반드시 RigidBody가 붙여져 있어야 하며,
RigidBody의 Kinematic 속성이 꺼져 있어야 한다.
Collision의 종류
- Void OnCollisionEnter (Collision c) : 충돌이 되는 순간 호출
- Void OnCollisionStay (Collision c) : 충돌이 되고 있을 때 매 프레임 마다 호출
- Void OnCollisionExit (Collision c) : 충돌이 끝날 때 호출
이것은 3D 기준이다.
collider2D혹은 RigidBody2D가 붙을 수 있는 2D인 경우Void OnCollisionEnter2D(Collision2D c) 라고 해야한다.
Tag
충돌을 처리할 때 어떤 오브젝트와 충돌을 했지 아는 것도 중요하기 때문에 이에 대한 처리도 해주어야 한다.
이러한 상황에서 가장 많이 사용하는 것이 Tag속성이다.
Tag속성은 inspector창에서 해당 오브젝트의 Tag를 지정할 수 있으며 Add Tag를 통해서 새로운 Tag를 만들 수 있다.
'Unity' 카테고리의 다른 글
[Unity] Addforce (0) 2022.08.23 [Unity] 유니티 생명주기 (Life Cycle) (0) 2022.07.27 [Unity] 인스턴스화 Instantiate의 정리 (0) 2022.07.25 [Unity] 코루틴(Coroutine) 정리 (0) 2022.07.21