유니티

[유니티 2D] 충돌 체크하기

labj 2024. 3. 10. 00:54

 게임오브젝트와 게임오브젝트 간에 부딛치거나 통과하는 것에 대해서 두가지 정도의 체크 방법이 있습니다.

C#에서 이벤트 함수인 OnTriggerEnter2D, OnCollisionEnter2D 입니다.

두가지 방식을 사용하려면 아래 사항이 적용되어 있는지 확인합니다.

게임오브젝트에 Collider 영역 추가
Collider 컴포넌트의 isTrigger 체크
게임오브젝트 중 하나에 물리법칙 컴포넌트 추가

 

 

 게임오브젝트 중 하나에 물리법칙 컴포넌트 추가합니다.

Square 게임오브젝트에 Inspector > Add Component > Physics 2D > Rigidbody 2D 추가

 

 

Rigidbogy 2D 컴포넌트가 추가되면 Square 게임오브젝트가 밑으로 떨어집니다. 떨어지지 않게 하려면 Rigidbody 2D > Body Type 에서 Kinematic을 선택합니다. 그러면 물리법칙이 적용되지 않습니다.

 

 

 게임오브젝트 중 하나에 물리법칙 컴포넌트 추가합니다.

Square 게임오브젝트에 Inspector > Add Component > Physics 2D > Rigidbody 2D 추가

 

 

 게임오브젝트에 Collider 영역 추가

Square 게임오브젝트에 Inspector > Add Component > Physics 2D > Polygon Collider 2D 추가

 

Collider 컴포넌트의 isTrigger 체크

Polygon Collider 2D 컴포넌트에는 is Trigger 항목이 있습니다. Collideris Tirgger를 체크합니다.

실행하고 게임오브젝트와 게임오브젝트에 있는 Collier가 서로 겹치면서 지나갈 때 OnTriggerEnter2D 이벤트가 발생합니다.

    private void OnCollisionEnter2D(Collision2D collision)
    {
        
    }

 

Rigidbody 2D > Body Type 에서 Kinematic을 선택하면 밑으로 떨어지지 않고 화살표키로 게임오브젝트를 움직일 수 있습니다. 물리법칙이 적용되지 않습니다

 

 

Rigidbody 2D 를 추가하면 Body Type이 기본으로 Dynamic으로 선택됩니다물리법칙이 추가되어서 게임오브젝트가 밑으로 떨어집니다떨어질 때 Collider가 적용되어 있는 게임오브젝트에 부딛치면 더 이상 내려가지 않고 멈춥니다게임오브젝트가 게임오브젝트에 부딛칠OnCollisionEnter2D 이벤트가 발생합니다.