2D RPG – 5. 맵 제작하기
1.기본 프로그램 다운
유니티에서도 [Sprite Image]를 활용하여 맵을 제작할수 있지만 실작업은 노가다 수준을 요구합니다.
따라서 타일 제작프로그램을 사용합니다.
MapEditor : https://www.mapeditor.org
Tiled2Unity : https://seanba.com/tiled2unity
MapEditor는 이미지 파일을 스프라이프 형태의 맵으로 제작하는 프로그램이고,
Tiled2Unity는 제작한 맵을 Unity로 Export 시켜주는 프로그램 입니다.
2.Tiled
[New Map] -> [Map Size], [Tile Size]를 준비한 맵이미지에 맞게 맞춰줍니다.
맵을 생성하면 격자무늬 형태의 맵을 볼수 있습니다.
이 격자무늬에 우리의 지도가 채워지게 됩니다.
[File] -> [New] -> [New Tileset] 으로 새로운 타일셋을 만듭니다.
타일셋은 맵에 뿌려질 바닥,풀,물,나무,각종 모든 오브젝트가 모여진 세트입니다.
가져오는 타일셋은 유니티에서 사용하려고 했던 맵파일로 지정합니다.
추가로 사용할 타일셋을 더 가져올수도 있습니다.
타일셋에서 원하는 타일을 선택하여 맵으로 끌어다 놓으면 맵을 완성할 수 있습니다.
이제 이렇게 만든 맵을 유니티로 가져와야 합니다.
3.유니티에서 Tiled2Unity 사용
우선 유니티에에 사용할 수 있도록 패키지를 등록합니다.
[Assets] -> [Import Package] -> [Custom Package]에서 Tiled2Unity 패키지 파일을 선택합니다.
[Import]를 하게되면 유니티 에셋창에 Tiled2Unity가 추가된걸 확인할 수 있습니다.
4.Tiled <-> Tiled2Unity 연동
Tiled로 돌아와서 톱니바퀴 모양이 버튼을 누르면 [Edit Commands] 메뉴가 있습니다
해당 메뉴에서 아래와 같이 추가합니다.
추가된 이름은 “Export”, [Arguments]에는 Tiled2Unity가 설치된 경로를 입력합니다.
ex) “C:\Program Files\Tiled2Unity\Tiled2Unity.exe” %mapfile
5.Tile의 완성과 이동불가지역 만들기
레이어를 추가해가면서 여러 타일들을 추가시킵니다.
이제 이동불가지역을 바로 Unity에 적용할 수 있도록 해보겠습니다.
Tiled의 Layer에서 [Object layer]를 하나 추가합니다.
상단 아이콘 메뉴중에 사각형 모양의 메뉴를 고르고 벽을 만들어 줍니다.
위와 같이 맵을 만들어 줍니다.
추가로 [4]번에서 커스텀 속성을 추가하여 유니티에서 사용하는 이동불가 레이어 이름을 입력해줍니다.
이는 맵을 수정할때마다 유니티에서 새로 설정해야 하는 번거로움을 없애줍니다.
만든뒤 톱니 모양 메뉴를 누르고 [Export]를 선택하면 Tiled2Unity의 화면이 뜹니다.
[Export to]는 프로젝트 폴더의 에셋폴더의 Tiled2Unity 폴더로 지정합니다.
최종적으로 [Big Ass Export Button]을 누르면 완료가 됩니다.
6.Unity에서 사용
만들어진 맵은 [Import]한 Tiled2Unity 폴더의 Prefabs 폴더에 있습니다.
게임화면의 캐릭터 위로 드래그를 하여 넣게 되면 캐릭터가 가려지게 됩니다.
이 부분은 캐릭터 객체 옵션의 [Sprite Renderer]의 [Sorting Layer]와 [Order in Layer]에서 우선순위 설정으로 수정합니다.
[Sorting Layer]의 우선순위가 높으며 background,object 등등 알아보기 쉽게 추가하여 사용합니다.
[2]번에서 Tiled에서 적용했던 레이어들도 확인할 수 있습니다.
7.기타 설정
캐릭터 가리기
맵상의 나무 같은 오브젝트에서는 캐릭터가 나무 아래에 위치해야 합니다.
이 부분은 [5]번에서 설명했던 커스텀 속성추가와 [Sorting Layer] 기능으로 설정할 수 있습니다.
맵 가운데 나무를 추가한 뒤, unity:sortingLayerName 라는 커스텀 속성 추가 후 값을 유니티에서 설정한 캐릭터 객체보다 상위의 레이어 이름을 지정합니다.
추가로 사용가능한 주요 커스텀 속성들은 아래와 같습니다.
unity:sortingLayerName
unity:sortingOrder
unity:tag
unity:layer
unity:scale
Pixels Per Unit
현재 프로젝트의 단위는 Unit 입니다.
그리고 스프라이트로 들어가 있는 캐릭터의 Unit 당 Pixel의 값은 48로 설정되어 있습니다.
하지만 Tiled2Unity에서 Export시에 사용하는 Pixel Per Unit의 값은 1로 설정되어 있습니다.
이 단위를 맞춰 주어야 합니다.
캐릭터 스프라이트 이미지의 [Pixels Per Unit]의 값을 1로 조절합니다.
캐릭터가 확대되어 나타나게 될텐데, 캐릭터의 [Scale] 값을 1로 지정합니다.
완성화면
만약 이동불가지역이 적용이 안된다면, Object Layer 객체의 Layer를 NoPassing으로 지정합니다.