ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unity] 충돌 처리 Collision / Trigger의 정리
    Unity 2022. 7. 22. 16:22

    충돌 발생 조건

    충돌이 일어나기 위해서는, 두 오브젝트가 모두 Collider를 가지고 있어야 하며,

    둘 중 하나 이상은 RigidBody 컴퍼넌트를 가지고 있어야 한다.

     

    두개의 오브젝트 중 하나만 움직인다면 움직이는 오브젝트가RigidBody를 가지고 있어야 한다.


    Trigger

    Trigger는 오브젝트간의 물리적 연산을 하지 않고 충돌을 감지할 수 있다.

     

    쉽게말해, 두 오브젝트가 접촉했을 때 서로 튕겨나가지 않고 그냥 통과하게 된다.

     

    Trigger를 쓰기 위해서는 해당 Collider의 Is Trigger 항목을 체크해야 한다.

    Trigger의 종류

    1. Void OnTriggerEnter (Collider c) : 충돌이 시작되는 순간 호출
    2. Void OnTriggerStay (Collider c) : 충돌이 되고 있을 때 매 프레임 마다 호출
    3. Void OnTriiggerExit (Collider c) : 충돌이 끝날 때 호출

    Collision

    Collision은 Trigger와 다르게 물리적인 연산을 하며 충돌을 감지한다.

     

    Collision 처리를 하려면 둘 중 하나에는 반드시 RigidBody가 붙여져 있어야 하며,

    RigidBody의 Kinematic 속성이 꺼져 있어야 한다.

    Collision의 종류

    1. Void OnCollisionEnter (Collision c) : 충돌이 되는 순간 호출
    2. Void OnCollisionStay (Collision c) : 충돌이 되고 있을 때 매 프레임 마다 호출
    3. 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
Designed by Tistory.