본 게시글은 'HeartBeast'의 Make an Action RPG 파트의 내용을 다룹니다.
본 강의는 연계 강의이기 때문에 꼭 이전 편들을 보면서 진행하셔야 내용을 이해하시는데 어려움이 없습니다.

 번째 파트인 애니메이션 트리입니다.

저번 시간에 타일 맵을 통해 지형을 꾸며보는 시간을 가졌습니다. 이번에도 지형에 좀 더 생기를 불어넣도록

절벽을 구현하고 타일에 충돌을 넣는 법에 대해서 배워보는 시간을 갖도록 하겠습니다.

 

+ 버튼을 클릭해 노드 하나를 추가합니다.

 

타일 맵을 검색 해 TileMap을 선택합니다. 따로 말씀은 안 드렸지만

왼쪽에 Recent: 에서도 선택할 수 있습니다. 이는 최근에 생성한 노드의 유형을 표시해줍니다.

 

생성된 노드 TileMap2드래그&드롭으로 TileMap 아래에 위치시킵니다.

 

두 타일 맵 노드의 이름을 각각 'DirtPathTileMap', 'DirtCliffTileMap'으로 변경합니다.

 

DirtCliffTileMap를 선택하고 Tile set 항목에서 저번처럼 새로운 타일 셋을 생성합니다.

 

인스펙터(Inspector) 뷰에서 Cell을 펼친 뒤 Size의 값을 이번에는 xy 둘 다 '32'로 맞춰줍니다.

기존에 깔려 있는 타일이 16px *16px 이것을 1x1 타일이라 가정하여 말한다면,

2x2 타일 형태로 쓸 것이기 때문에 32px * 32px로 설정하기 위해 32로 맞췄습니다.

 

생성된 타일 셋을 클릭합니다.

 

하단의 버튼을 눌러서 타일 셋을 추가합니다.

 

타일 셋 추가 창에서 World폴더 안에 있는 CliffTileSet.png 선택합니다

 

New Autotile선택합니다. 그리고 적당히 확대도 해줍니다.

 

영역을 드래그&드롭하여 지정합니다.

 

그다음 인스펙터 뷰에서 다음과 같이 수정합니다. 아마 이전 설정 때문에

Step 항목의 값이나 Subtile Size16으로 맞춰져 있을 것입니다.

 

수정하고 나서 만약에 위의 이미지와 다르게 빈 공간이 생긴다면

영역을 다시 재 설정해주시길 바랍니다.

 

이전 시간에 잘 따라오셨다면, 사실 패턴은 완전히 같다고 제가 언급한 적 있을 것입니다.

하지만 여러분이 패턴을 기억하신 것이 아니라 일부 핵심만 기억하셨다면

이게 헷갈릴 수 도 있습니다. 빈 공간은 당연히 코너가 아니기 때문에 선택하지 않겠지만,

금 이렇게 선택한 상황에서 아래 한 줄은 선택하지 않는 건가? 의심을 할 수 도 있습니다.

 

하지만 이 3x3 타일에서는 인접한 부분을 선택해줘야 하기 때문에 모서리와 변만이 코너 타일이 되게 됩니다.

따라서 다음과 같이 선택을 해줘야 하고요, 이전 패턴을 외우셨다면 동일합니다.

 

이는 이전 시간에 제대로 학습하셨다면, 문제없을 거라 판단되어 빠르게 넘어가도록 하겠습니다.

다음과 같이 비트 마스크를 설정해주시면 됩니다.

 

아이콘도 미리 바꿔줍시다.

 

다시 DirtCliffTileMap를 선택합니다.

 

대강 절벽을 만들어보았습니다. 오브젝트 위치가 맘에 들지 않아서 조금 수정을 하도록 하겠습니다.

 

부쉬 오브젝트 일부 위치를 옮겼고 흙 타일도 조금 수정했습니다. 절벽은 투명하기 때문에

절벽에다가 흙 타일을 넣을 수도 있습니다. 한번 자유롭게 한번 맵을 구성 해보시면 됩니다.

 

이제 어느 정도 맵을 구성 하셨다면, 한번 플레이 버튼을 눌러서 확인해봅시다.

절벽인데, 막히지 않고 통과가 되죠? 아직 우리가 충돌(Collision)을 넣지 않았기 때문입니다.

 

바로 충돌을 설정해봅시다. 다시 DirtCliffTileMap를 선택해서

타일 셋 메뉴로 돌아갑시다. 그리고 Collision 버튼을 클릭합니다.

 

그 아래 네모난 아이콘을 클릭합니다.

 

영역 안 아무 데나 클릭합니다. 그러면 이런 식으로 생성됩니다.

생성된 정사각형은 충돌 영역을 보여주는 겁니다.

 

이 이미지는 따라 하지 마시고 눈으로만 봐주세요.

여기서는 한 타일 기준으로 설정하며, 각 꼭짓점을 드래그해서 다른 도형 형태로도 만들 수 있습니다.

여기서 스냅 옵션에서 Step 항목을 줄이면, 좀 더 작은 단위로 도형을 구성할 수 있습니다.

 

이제 각 타일마다 방금 했던 작업을 반복해주시면 됩니다.

 

그런데 충돌을 설정하는 게 불편하실 수 있습니다. 불편하시겠지만 일일이 수작업으로 충돌을 넣어줘야 합니다.

일괄로 하는 건 딱히 없는 것 같습니다. 대신에 다음 타일로 전환시키거나 이전 타일로 전환시키는 버튼이 존재합니다.

 

위에 표시한 버튼 을 눌러도 되긴 합니다만, 저걸 누르는 것보다 영역에 있는 타일을 클릭하는 게 더 편하겠죠?

하지만 단축키로도 이동이 가능합니다. PAGE_DN/PAGE_UP키로 이전 타일, 다음 타일을 선택해줍니다.

 

그렇게 해서 타일이 있는 부분은 모조리 해주시면 됩니다.

다 하셨다면 한번 플레이를 해보도록 할까요?

 

생성하는 과정이 조금 귀찮은 거치고는 굉장히 효과적으로 작동합니다. 예전에 충돌 제어 파에서 다뤘던

충돌 폴리곤 같은 것을 생성할 필요도 없으며 일일이 배치하지 않아도 지형을 구성할 때 충돌도 같이 설정됩니다.

이는 빠른 레벨 디자인을 하는데 매우 도움이 됩니다.

 

여기까지 오토 타일로 하는 충돌 설정은 끝났습니다. 밑의 내용은 보충 설명이니

굳이 안 보셔도 되지만 궁금하시다면 읽어보시면 됩니다.

 

이번 파트에서는 충돌을 다뤘지만 다른 몇 가지 기능에 대해서도 간략하게 짚고 넘어가겠습니다.

 

어클루전(Occlusion): 고도 엔진 내 빌트-인 조명 시스템을 사용하며 생성된 도형은 영역으로 그림자를 나타나게 됩니다
내비게이션(Navigation): 고도 엔진 내 빌트-인 내비게이션이며, 

주로 AI(적 등)의 길 찾기나 길 찾기가 가능한 것들에 사용하게 됩니다.
우선순위(Priority):  오토 타일보다는 아틀라스에 적합합니다. 예를 들어 여러 가지 색상의 꽃을 랜덤 하게 배치하고 싶을 때 

각 타일에 대한 확률을 지정할 수 있습니다. 숫자가 더 높을수록 선택될 가능성이 높습니다. 

이 기능을 사용하기 위해서는 Enable Priority에 체크✔하여야 합니다. 예시는 아래에 다루도록 하겠습니다.
Z 인덱스(Z Index): 흔히 생각하는 포토샵 레이어를 생각하시면 됩니다.

포토샵에서 레이어가 맨 위에 있으면 가장 위에 표시되듯이
Z 인덱스도 해당 타일에 값을 높게 줄 경우 가장 위로 가게 됩니다.

 

이 이미지는 따라 하지 마시고 눈으로만 봐주세요.

우리가 여태껏 만든 오토 타일은 오토 타일 기능을 끄고도 사용할 수 있습니다.

Disable Autotile을 체크하게 되면 자동으로 연결되는 게 아닌

아틀라스처럼 타일 하나하나 선택하면서 직접 배치 가능합니다.

 

이 이미지는 따라 하지 마시고 눈으로만 봐주세요.

또 다른 기능인 우선순위에 대한 예시를 다뤄보도록 하겠습니다.

타일 맵을 생성 후 아틀라스로 영역을 지정한다면, 다음 기능으로 우선순위를 적용할 수 있습니다.

 

이 이미지는 따라 하지 마시고 눈으로만 봐주세요.

Enable Priority에 체크하게 되면 선택 가능한 타일이 사라지며,

이런 식으로 배치하게 되면 우선순위 값을 통해 랜덤 하게 타일이 결정되게 됩니다.

 

이것으로 이번 파트를 마치겠습니다. 다음 파트에서는 다시 애니메이션 파트를 다룰 것이며 공격 모션을 추가할 것이고

구현하기 위한 방법으로 상태 기계[(State Machine), 혹은 FSM라고 함]를 배워보도록 하겠습니다.

 

+) 05/10 일부 용어 레퍼런스 링크 적용

728x90
728x90