유니티 2D 충돌 안됨 - yuniti 2D chungdol andoem

오늘은 지난 Rigidbody2D에 이어서 Collider2D를 이론적으로 다뤄볼 것이다.
우선 간단한 이론과 자주 사용하는 Collider의 종류를 알아보고
Script를 작성할 때 자주 쓰이는 Messages에 대해서 알아보도록 하겠다.

유니티 2D 충돌 안됨 - yuniti 2D chungdol andoem

전체적인 모습

오브젝트 간의 충돌을 감지하기 위해서는 오브젝트의 경계를 설정해야 하는데, 오브젝트에 경계를 설정하게 되면 오브젝트의 경계에 다른 오브젝트가 들어오게되면 충돌을 감지하기 때문이다. 이 경계를 Collider라고 하는데 Collider를 설정하지 않으면 캐릭터가 벽을 뚫고 나간다거나 중력을 줬을 때 땅을 뚫고 아래로 떨어지는 현상이 일어날 것이다.

유니티 2D 충돌 안됨 - yuniti 2D chungdol andoem

실행 후 Came뷰

cube와 ground에 각각 Box Collider로 경계선을 만들어줬다. Cube에는 Rigidbody2D를 넣었고 중력을 준 상태이다. 실행을 했을 때 Collider로 감싼 경계선끼리 부딪혀 Cube가 Ground를 관통하지 않고 위에 있는 모습을 확인 할 수 있다.

유니티 2D 충돌 안됨 - yuniti 2D chungdol andoem

Collider 편집

Collider의 크기를 조절하는 방법은 간단하다. Collider에는 다양한 종류가 있고 종류에 따라서 세세하게 또는 간단하게 조절할 수 있는데 BoxCollider와 같은 경우는 사각형 모양으로, 마우스로 움직여 간단하게 조절할 수 있다. 위 사진에 나와있듯 Edit Collider 버튼을 누르면 오브젝트를 감싸는 초록색 경계선이 생기는데 이 경계선이 Collider다.

유니티 2D 충돌 안됨 - yuniti 2D chungdol andoem

Add Component->Physics2D
  • Box Collider2D : 스프라이트의 로컬 좌표 공간에서 정의 된 위치, 너비 및 높이를 가지는 사각형이다. 따라서 각 각의 변이 평행한 모습이다.
  • Circle Collider2D : 스프라이트의 로컬 좌표 공간에서 정의 된 위치와 반지름을 가진 원이다.
  • Edge Collider2D : 선분으로 만들어진 자유형 모서리로 정의되므로 스프라이트 그래픽의 모양에 매우 잘 맞도록 조정할 수 있다. 직선과 같은 모양으로도 편집이 가능하며 사각형이나 원처럼 영역을 꼭 감싸야하는 것은 아니다.
  • Polygon Collider2D : 선분으로 만들어진 자유형 모서리로 정의되므로 스프라이트 그래픽의 모양에 매우 잘 맞도록 조정할 수 있다. Edge Collider2D와 다른점은 영역을 꼭 감싸야 한다는 것이다. (직선과 같은 모양이 불가능 하다)

자주 사용하는 Collider를 위주로 짧게 설명을 적어 보았다. 위 4가지 말고도 다양한 콜라이더 들이 있는데 용도에 맞춰서 Collider를 골라 사용하면 된다. 오브젝트의 모양,크기와 Collider의 모양,크기가 같은 편이 좋지만
Collider가 간단할 수록 좋다.

다음은 Script를 작성 할 때 자주 쓰이는 Messages다. (다음 Messages들은 2D물리에서만 적용된다)

  • On Trigger : Is Trigger가 체크되어있을 경우
  • OnTriggerEnter2D : 들어오는 콜라이더를 가진 오브젝트가 오브젝트의 콜라이더와 접촉 할 때 반응한다.
  • OnTriggerExit2D : 콜라이더를 가진 다른 오브젝트와 더 이상 오브젝트의 콜라이더와 접촉이 없을 때 반응한다.
  • OnTriggerStay2D : 콜라이더를 가진 다른 오브젝트와 오브젝트의 콜라이더와 접촉 중에 반응한다.

OnCollision

  • OnCollisionEnter2D : 들어오는 콜라이더를 가진 오브젝트가 오브젝트의 콜라이더와 접촉 할 때 반응한다.
  • OnCollisionExit2D : 콜라이더를 가진 다른 오브젝트와 더 이상 오브젝트의 콜라이더와 접촉이 없을 때 반응한다.
  • OnCollisionStay2D : 콜라이더를 가진 다른 오브젝트와 오브젝트의 콜라이더와 접촉 중에 반응한다.

Collider2D에 대해서 간단하게 알아보았다. Script내에 사용되는 Messages와 같은 것들은 이후 포스팅 하면서 자주 사용하게 될텐데 사용하면서 더 자세히 설명하도록 하겠다.

반응형

안녕하세요 UnityBeginner입니다.

2개의 물체의 콜라이더를 적용했지만 동작하지 않습니다.

유니티를 막 시작한 사람들이 한번쯤 겪을 수 있는 부분입니다.
그래서 OnCollisionEnter, OnTriggerEnter 작동 문제에 대해 다뤄보겠습니다.

체크하기

1. 충돌을 확인하려는 오브젝트들에게는 Collider 컴포넌트가 포함되어야합니다.

2. 충돌체에 Rigidbody컴포넌트가 포함되어야 합니다.

3. 충돌한 2개의 오브젝트중 1개가 Trigger가 활성화되어있다면

OnTriggerEnter가 호출되고 그렇지 않은 경우 OnCollisionEnter 호출됩니다.

반응형

저작자표시

'유니티기초' 카테고리의 다른 글

유니티 Unity Ads 게임 ID 위치 찾기  (0) 2020.07.06
유니티 갑자기 UI 버튼이 클릭되지 않을 때 확인해보기  (0) 2020.07.05
유니티 갑자기 Null Exception 떨어지는 경우 확인해보기  (0) 2020.07.03
유니티 해상도 전환하기  (0) 2020.06.16
유니티 일단 시작하기  (0) 2020.04.19