타일맵 콜라이더
플레이어와 상호작용 (부딪힐수 있는) 타일들이 있는 타일맵 오브젝트를 선택하여 Tilemap Collider 2D 를 적용할시 해당 타일의 모양을 따라 콜라이더가 적용된다
이는 특정 오브젝트 들에게는 문제가 되지 않겠으나 대부분의 오브젝트들의 원근감을 해치고 자연스럽지 못한 콜라이더를 만들어낼수 있다.
이를 방지하기 위해 아래와 같이 콜라이더 타일맵 오브젝트를 먼저 생성해준다.
이후 해당 타일맵 오브젝트에는 충돌을 원하는 구역의 타일에 임의의 스프라이트 타일을 넣어주었다. (나는 Packages/2D Sprite 경로에 있는 기본 Square 스프라이트를 사용하였다.)
나중에 ai의 이동을 고려하고 플레이어와 오브젝트의 원근감을 고려했을때 몇가지 룰을 두고 콜라이더 를 넣어주었는데 이는 아래와 같다.
1. 플레이어가 뒤에 자연스럽게 묻힐수 있도록 부딪힐수 있는 오브젝트더라도 상단에는 콜라이더를 놓지 않았다.
2. 오브젝트의 틈은 Ai의 이동시 끼임등으로 방해가 될수 있기 때문에 비워주지 않고 채웠다.
3. 그렇게 채워준 오브젝트들은 최소 4칸이상을 띄워 AI의 움직임을 방해하지 않도록 하였다.
이후 아래와 해당 타일맵 오브젝트에 컴포넌트 들을 부착시킨다.
여기서 리지드 바디 2d를 static으로 해준 이유는 물리연산량을 많이 줄일수 있기 때문이기도 하고 해당 오브젝트들은 중력의 영향을 받으면 안되기 때문이다.
그리고 완성된 자세한 이미지는 아래를 참고하자
이렇게하면 플레이어는 해당 오브젝트들과 출돌시키는 것이 가능하다.
그리고 캐릭터와 상호작용을 위해 캐릭터에도 컴포넌트를 부착시켜주는데 이때 AddForce를 이용한 움직임을 위해 RigidBody 2D를 부착시켜주었다. (만약 해당 메서드를 사용하지 않는다면 RIgidBody2D는 부착하지 않아도 된다.)
여기서 원통형 콜라이더와 구형 콜라이더중 구형콜라이더를 사용했을때 충돌후 조금더 부드럽고 자연스러운 움직임이된다고 느껴 구형 콜라이더로 확정하였다.
이제 레이어 관련하여 얘기를 할때인데 우선 default 레이어에는 콜라이더 타일맵과 캐릭터와 부딪힐수 있는 레이어를 제외한 나머지 타일맵들을 순차적으로 넣어주었고 그 아래 플레이어 레이어를 넣어주고 그 위로 오브젝트 레이어를 생성해주었다.
여기서 소팅 레이어에 표시되는 레이어들 또한 어느 위치에 있냐에 따라 레이어 우선도가 바뀌니 주의하자.
이렇게 하고 실제로 랜덤 배치되는 오브젝트들은 오브젝트 레이어로 넣어주면 된다. (물론 해당 객체들은 각각 따로따로 콜라이더가 붙어 있어야 한다.)
최종 결과물
'프로젝트 > 건즈앤 레이첼스' 카테고리의 다른 글
[유니티 프로젝트] 절차적 맵생성 알고리즘을 이용한 랜덤 맵 생성.2 * 코드 수정 (2) | 2023.03.12 |
---|---|
[유니티 프로젝트] 절차적 맵생성 알고리즘을 이용한 랜덤 맵 생성 .1 (0) | 2023.03.10 |
[프로젝트] 상자 오브젝트 접근시 상자 오픈 & 깜빡이다 사라지게 하기 (0) | 2023.03.07 |
[프로젝트] 아이작 맵 생성 알고리즘 설명 (제작자 Himsl의설명 영상 분석) .1 (1) | 2023.03.07 |
[알고리즘] (MST)최소 신장 트리란? (0) | 2023.03.05 |