[UNITY] 타일맵(tile map) 만들기

         


옛날에 RPG만들기95에서 맵을 만들기 위해 타일(tile) 시스템이 포함되어 있던게 기억난다. 타일 팔레트에서 그리고싶은 타일을 눌러서 맵에 그릴수 있었다. 그저 도장처럼 찍어내는게 아니라, 연결해서 그리면 자동으로 타일들이 붙어져서 그려졌던것 같다. 예를들어 도로맵타일을 클릭해서 이리저리 그리면 자동적으로 도로가 연결되어져서 그릴수 있도록... 말로 설명하려니 참 어렵네 ㅋㅋㅋ


대략 이런식이라 이거지.



옛날에 이 툴을 사용하면서 참 당연스럽게 사용했었는데, Unity에서 비슷하게 타일시스템을 적용하려니 생각보다 잘만든 툴이었구나 생각이 든다. 특히 자동적으로 타일끼리 이어지도록 그려주는 시스템 (유니티에서는 Rule Tile이라고 한다.)이 생각보다 복잡한 로직이다. 


다행히 누군가가 이러한 복잡한 로직을 library로 만들어서 우리는 감사히 사용해주기만 하면 된다.

일단 복잡한 기능을 가진 타일을 쓰기전에, 타일형태로 맵을 그릴수 있는 셋팅을 해보자.



Scene에서 2D Object -> Tilemap을 생성한다. (게임은 2D, 3D 상관없다.)

Tilemap을 생성하면 Grid라는 상위 object가 생성되고, 그 안에 Tilemap object가 생성된다.

Tilemap이 생성되면 Scene화면이 바둑판 모양으로 변하는 것을 볼 수 있다.



마치 RPG만들기 툴처럼 맵에 바둑판모양의 선이 그어지고, 이제 타일처럼 맵을 깔 수 있다!!

타일 하나의 크기는 1unit이고 1unit이란 카메라의 world space 단위이다. 카메라를 클릭하면 Size가 기본으로 5라고 설정되있는 것을 볼 수 있는데, 중앙에서 제일 상단까지가 5unit이라는 소리다. 즉 타일은 세로로 10개가 깔리게 된다. 늘리거나 줄이고 싶으면 카메라의 size를 조절하면 된다.


이제 Scene에 타일을 깔수 있도록 했으니 타일을 만들어보자. Window에서 Tile Palette를 불러온다.



그럼 아무것도 없는 Tile Palette가 생성된다. 여기에 타일로 쓸 Sprite를 드래그하면?! 



확실히 RPG만들기 툴과 비슷해졌다!!

하지만 RPG만들기에서 사용하던 자동생성타일이나 에니메이션타일기능은 없다. 그저 선택하고 붙이고 밖에 안되는 기본적인 타일이다. 기능을 가진 Tile을 쓰기 위해서는 외부 Lib를 가져와야 된다.


Github에서 2d-extras라고 치면 Unity에서 사용 가능한 2d library 모음을 받을 수 있다.



Link -> https://github.com/Unity-Technologies/2d-extras


내가 만든 프로젝트에 다운받은 Assets을 Import하면 다양한 Tile object를 생성할 수 있다. 그중에서 Rule Tile을 만들어보자.


Create에 다양한 Object가 추가되었다.


Rule Tile은 자신의 타일과 인접한 타일의 유무에 따라 특정한 Sprite를 보여줄 수 있는 도구이다. 예를 들어 자기 양옆에는 타일이 있는데 위아래는 없으면 가로로만 연결된 모양의 Sprite를 보여줄 수 있다는 소리다. 옵션을 이것 저것 설정하면 아래와 같은 타일을 만들 수 있다.



사용법은 간단하다. (생각보다 노가다이다)

근처에 타일 조건에 따른 보여주는 Sprite를 지정하면 된다.

위에 사용된 RuleTile의 조건은 아래 그림과 같다.



제일 첫번째 룰은 오른쪽과 아래에 타일이 있고, 왼쪽과 위쪽에 타일이 없으면 모서리 Sprite를 보여준다는 룰이다. 가운데 있는 <->화살표는 좌우 대칭으로 실행하라는 소리다. 이렇게 하면 왼쪽과 아래에는 타일이 있고, 위쪽과 오른쪽에 타일이 없으면, 좌우 대칭된 Sprite를 보여준다. 즉 하나의 Rule로 2개의 효과를 볼 수 있다. 좌우 대칭 말고도 상하 대칭이나 모든 방향에 적용하는 것도 있다. 사실 처음부터 모든 룰을 정하고 그리기 보다는, 타일을 그려보고 안그려지거나 이상하게 보이는 타일을 찾아서 룰을 하나씩 추가하는 방법으로 진행하는것이 쉽다.






정리

1. Tile Map 오브젝트를 만든다.

2. 화면에 표시할 Tile 수는 Camera의 Size에 의존한다. 1unit = 1tile

3. rule tile, animation tile 등을 사용하기 위해 2d-extras library를 import한다.










댓글(0)

Designed by JB FACTORY