반응형

유니티게임 엔진을 이용하다 보면 특정 오브젝트끼리는 충돌판정을 무시해야할 경우가 있습니다. 몬스터끼리의 충돌판정을 무시해야하는 경우가 그에 해당합니다. 유니티에서는 몇가지 레이어 시스템이 존재하는데 그 중 인스펙터창에서 레이어 조정 후 Physics Setting 에서 LayerCollisionMatrix설정을 조금만 해주시면 됩니다.

플레이어가 아래로 지나간다면 블럭이 추락하여 플레이어를 공격하는 오브젝트입니다. 위 움짤에서 보이듯이 기본적인 스테이지의 바닥(map)과 추락하는 블럭(DownBlock)이 충돌판정이 일어나 스테이지의 바닥과 추락하는 블럭이 맞붙어있는 것을 볼 수 있습니다. 스테이지 바닥의 레이어는 Map으로 되어있고 추락하는 블럭의 레이어는 건들지 않았으므로 Default로 설정 되어있습니다. 

Map레이어와 Defalut레이어간의 충돌을 무시할 수도 있겠지만 테스트 용도로 Test레이어를 추가해주겠습니다.

레이어 추가는 아래와 같이 하시면 됩니다.

기본적으로 레이어들은 모두 충돌판정을 하는 것으로 설정이 되기 때문에 ProjectSetting에 Physics 메뉴에서 레이어들의 충돌판정을 조정해줘야합니다. 맥OS기준 Edit - Project Setting... - Physics(2D)에서 설정이 가능합니다. 제가 만들고 있는 게임은 2D게임이기 때문에 Physics2D에서 설정을 해주겠습니다.

스테이지 바닥(Map레이어)와 추락하는 블럭(Test레이어)간의 충돌판정을 무시할 것이기 때문에 Physics(2D)메뉴의 Layer Collision Matrix항목으로 와서 Test와 Map 사이의 체크박스를 해제하였습니다. 이제 Test레이어와 Map레이어 간에는 충돌판정이 일어나지 않을 것 입니다.

설정을 마치고 동일하게 실행하여보면 두 레이어간의 충돌이 일어나지 않아 추락하는 블럭이 쭉 내려가는 모습을 볼 수 있습니다!

요약을 하자면 A, B물체간의 충돌을 무시하고 싶다!

1. A, B 물체 각각 레이어를 설정

2. Physics(2D)메뉴에 있는 Layer Collision Matrix 에서 충돌을 원하지 않는 레이어들간의 체크박스를 해제

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기