Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티

유니티) 레이어마다 물리적용 대상 다르게 설정하기(Layer Collision Matrix)

UniCoti(유니코티) 2022. 12. 23.

유니티에는 콜라이더라는 개념으로, 

가상의 물리적 표면을 만드는 컴포넌트가 있다.

 

만약에 플레이어가 총알을 쏘는데

플레이어에게도 물리적 표면이 있고,

총알 또한 물리적 표면이 있다면,

 

표면이 충돌하여 총알이 다른 방향으로 가거나

플레이어에게 대미지가 들어가는 등 예상치 못한 일이 일어날 것이다.

 

이런 현상에는 OncollisionEnter의 인수인

other을 이용해서 if문을 돌리는 방법이 일반적인데,

 

조금 큰 프로젝트에서 많은 레이어를 관리할 때는

오늘 설명할 방법도 효율적이다.

 

본격적으로 하는 법을 소개해보겠다.


먼저, Edit -> Project Settings로 들어가 준다.

 

그 후, 많은 탭 중에 자기가 2D템플릿이라면 

Physic 2D, 3D라면 그냥 Physic를 선택해 준다.

(이 게시물의 경우 개발대상이 2d라 physic 2d로 들어갔다.)

그럼 이런 모습인데, 맨 밑에 어찌 보면 어려워 보이는

저 부분을 건드릴 것이다.

사실 어떻게 보면 또 가장 쉽다.


저기 보면 여러 레이어가 있는데,

두 레이어 사이에 있는 체크박스를 끄면

충돌이 안되고, 체크박스를 켜면 충돌이 일어난다.

 

저걸 딱히 설정 안 했을 때는 모든 체크박스가 다 켜져 있다.

나(필자)의 경우, bullet과 bullet의 충돌이 꺼져있는데,

총알이 서로 충돌해서 다른 데로 가는 문제점이 발생해서

저런 식으로 설정해 주었다.

 

하지만 총알끼리의 충돌만 억제한 것이기에

다른 오브젝트와의 충돌은 여전히 가능하다.

 

유니티 협력 글(어필리에이트)


이러한 이점이 있으니 한번 활용해보길 바란다.

 

도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글