충돌처리 이벤트 조건

  1. 두 오브젝트가 collider를 가지고 있어야 한다.
  2. 적어도 하나의 오브젝트는 Rigidbody를 가지고 있어야 한다.

이때, Collision이란? Collsiong은 말 그대로 충돌이라는 기능을 갖고 있다.
오브젝트와 오브젝트가 서로 면이 맞닿음을 감지하며 물체끼리 부딪혔을 때 어떤 물체와 부딪혔는지도 파악할 수 있다.

Rigidbody란? Rigidbody는 오브젝트를 속이 꽉 찬 상태(Mesh한 body로 만들어준다)
Rigidbody가 없으면 오브젝트끼리 통과하지만 있으면 통과하지 못한다.

OnTrigger , OnCollision 비교하기

1. OnTrigger(Collider other)

유니티에서 충돌체크를 하기 위한 필요한 컴포넌트이다.

1) void OnTriggerEnter(Collider other) : 물체간의 충돌이 처음 일어났을 때 호출

2) void OnTriggerStay(Collider other) : 물체간의 충돌이 일어난 후 충돌이 지속될 때 호출

3) void OnTriggerExit(Collider other) : 물체간의 충돌이 끝나는 그 순간 에 호출

4) void OnTrigger(Collider other) : 물리적 계산은 하지않고 충돌만 감지

OnTrigger를 사용할 때에는 꼭 설정해 줘야하는것들이 있다.
두개의 오브젝트에는 반드시 충동체크를 할수 있는 Collider가 있어야한다.
그리고 두 오브젝트중 하나는 Collider에 있는 is Trigget에 체크가 되어있어야한다. 이때, is Trigger 가 체크가 되면 흰공에는 Rigidbody에 무게 값을 갖고있기 때문에 땅을 통과해 밑으로 사라져버린다.

//Trigger 사용법
 void OnTriggerEnter(Collider other){        
   if(other.tag == "EndPoint"){
       // event
   }

   if(other.gameObject.tag == "Obstacle"){
    //태그를 가진 오브젝트끼리 충돌 시 행동할 내용
   }

   if (other.gameObject.name == "name")
        {
            print(other.gameObject.name);
            //오브젝트 이름으로 사용할 때
        }
}

2. OnCollsion(Collision collision)

1) void OnCollisionEnter(Collision other) : 물체간의 충돌이 처음 일어났을 때 호출

2) void OnCollisionStay(Collision other) : 물체간의 충돌이 일어난 후 충돌이 지속될 때 호출

3) void OnCollisionExit(Collision other) : 물체간의 충돌이 끝나는 그 순간 에 호출

4) void OnCollision(Collision other) 은 물리적 계산과 충돌을 함께 감지

//Collsion 사용법
void OnCollisionEnter(Collision other)
    {
        SceneManager.LoadScene("main_scene"); //충돌 시 씬 변경

        //충돌 시 행동할 내용
    }

3. OnCollision 과 OnTrigger 차이

  • Collision 충돌 처리할 때는 두 객체 모두 컴포넌트에 RigidBody를 가지고 있고, IsTrigger 와 Kinematic 속성이 비활성화 상태이고 Collier 컴포넌트를 둘다 가지고 있을때 사용 가능하다.

  • Trigger 사용 할 때는 두 객체 모두 Collider가 있어야하고, 둘 중 하나는 IsTrigger 가 체크되어 있어야하고, 그리고 RigidBody를 가지고 있어야한다