[Unity] 2D Top Down RPG 게임 만들기 - TileMap
안녕하세요. 오늘은 Unity Tile을 통해 배경을 만들어보려고 합니다.
TileMap Object 생성
TimeMap이란 그리드 형태로 Asset을 일정하게 배치할 때 사용되는 기술입니다. 주로 게임의 배경이나 구조물을 배치할 때 사용되는 기술로 알고 있으시면 됩니다. 그리고 Tilemap Collider 2D를 통해 충돌 이벤트도 구현할 수 있습니다
배치하는 Asset 모양에 따라 크게 Hexagonal, Isometric, Rectangular 3가지 유형의 TileMap 존재합니다.
mystic-wood의 Tile 모양은 Rectangular에 적합하기 때문에 Rectangular Tile Map을 생성해 주겠습니다.
Tile Size 설정하기
Tile이 배치될 Cell 크기가 Player보다 너무 큽니다. Tile의 크기가 크면 세밀한 표현이 어렵기 때문에 줄이는 것이 좋다고 하는데요. Cell Size는 Grid Inspector에서 CellSize 속성을 통해 조정할 수 있습니다. CellSize의 정답은 없어 보이지만 Tutorial에서는 0.16으로 가로, 세로를 설정해 주었습니다.
TileMap palette
Tile에 배치할 Asset을 추가하고 배치하기 위해서는 TileMap palette Editor를 열고 Palette를 생성해야 합니다. Scean 오른쪽 하단 창에서 open Palette를 클릭하거나 상단 메뉴 Window > 2D > Tile Palette 경로에서 찾을 수 있습니다.
TileMap Sprite 추가
생성한 TileMap에 Sprite을 추가해야 하는데요. 해당 이미지처럼 여러 Sprite가 하나의 이미지에 포함되어 있는 경우 어떻게 하면 된다고 했죠? 바로 Slice 기법으로 잘라주면 됩니다. 만약 하나의 이미지로 되어 있는 경우에는 Slice 없이 palette로 바로 옮겨주시면 됩니다.
Palette에 Sprite를 추가하는 방법은 아주 간단합니다. 위와 동일한 방법으로 나머지 Sprite로 Palette에 추가하면 됩니다!
TileMap 배치하기
Palette를 완성했다면 Brush 또는 Paint 기능을 통해 TileMap을 배치할 수 있습니다. Brush와 Paint 기능은 일반적인 그림 툴과 동일하므로 어렵지 않을 거예요. 그리는 방법은 Brush 또는 Paint를 선택하고 Palette에서 배치할 Tile을 선택해서 TileMap에 마우스로 클릭하면서 드래그하면 배치됩니다. 여러분의 상상력을 표현해 보세요!
Tile Level 두기
Tile을 배치하다 보면 또 다른 Tile 위에 배치하여 표현하고 하는 Tile이 존재할 수 있습니다. 이때 Tile Level을 두어 동일한 위치에 다른 Tile을 배치할 수 있습니다.
이전에 만들었던 TileMap을 Ground로 rename 하고 GroundTop이라는 새로운 TileMap을 생성합니다. 그리고 Order in Layer 속성을 통해 랜더링 되는 변경할 수 있습니다.
Player의 Order in Layer이 0이기 때문에 그보다 작은 값으로 Ground TileMap은 -5, GroundTop TileMap은 -3으로 설정해 주었습니다. 이제 GroundTop TileMap에 Ground TileMap에 배치된 Tile 위로 안전하게 배치할 수 있습니다.
충돌되는 Tile 생성하기
Player가 걸어갈 수 없는 Tile을 만들어야 할 수도 있습니다. 또는 Player가 특정 Tile 위에 올라갔을 때 동작해야 하는 액션이 있다면 TileMap Collider 2D를 사용해야 합니다. 이때 기존에 배치된 Tile과 구분하기 위해 새로운 TileMap을 생성합니다.
그리고 생성한 TileMap에 TileMap Conllider 2D 컴포넌트를 추가합니다. 이러면 TileMap에 추가된 Tile들이 충돌을 감지할 수 있게 된다고 해요.
이렇게 생성한 TileMap에 충돌 이벤트가 있을 것 같은 Tile들을 배치하면 됩니다. 아직 Player가 움직이지 않기 때문에 충돌 실험은 다음 기회로..
참조
- https://docs.unity3d.com/kr/2018.4/Manual/class-Tilemap.html