본문 바로가기
Unity

[2D] 유니티 타일맵(Tilemap) 을 알아보자

by 겜키도키 2020. 3. 11.

타일맵의 기본 개념

 

그리드(Grid)

타일맵은 언제나 Grid의 하위 항목이다(UI생성 시의 캔버스와 유사하다)

타일맵(TIlemap)

Photoshop의 레이어처럼 칠해진 타일들을 그룹화하여 가지고 있는 GameObject이다. 항상 Grid의 자식이된다.

예를 들면, Background 타일팔레트에서 배경레벨(땅이나 바닥 등) 을 그리고 그 위에 존재할 오브젝트(풀, 잡초 나무)등의 타일을 또 다른 TileMap 오브젝트를 생성하여 관리할 수 있다. 

 

Grid부모객체의 하위객체로 Background 그림과 Objects 그림을 나누어 칠했다.



타일맵 렌더러(TilemapRender)

타일을 렌더링하는 방법을 제어하는 구성 요소.

타일 팔레트(Tile Palette)

타일들을 목적에 따라 보관하고, 칠할수있는 도구이다.

원하는 방식으로 사용할 타일들을 그룹화시켜 팔레트에 저장해놓고 칠할수있다.

타일을 그림판처럼 사용할수있다고 보면된다. 지우개, 브러쉬 등 편리한 기능들을 제공한다.

타일(Tile)

타일 이미지는 타일 객체로 구성된다. 어떤 스프라이트를 참조해야할지를 알고있기 때문에 추 후 관리가 용이하다.

타일팔레트에서 특정 타일이 참조하는 스프라이트를 바꾸면 해당 타일로 칠해진 부분이 한꺼번에 수정되기 때문에

편리하다. 자세한것은 메뉴얼을 참조

 

타일들은 스크립트들을 통해 제어가 가능하고 사용자지정 동작을 설정할 수도 있다.

브러쉬도 마찬가지 이다. 

 

아래는 2D Extras 라는 플러그인에 대한 정보로,

유니티에서 타일로 레벨을 디자인할때 조금 더 효율적으로 활용할수 있도록 돕는 기능들이다.

기존에 PackageManager 에서 필요한 기능들을 임포트해서 사용해온것과 달리 2D Extras는 공식 지원되는 기능이 아니기 때문에 깃허브에서 다운받아야 한다.

 

Github 주소는 아래와 같다.

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

 

Unity-Technologies/2d-extras

Fun 2D Stuff that we'd like to share! Contribute to Unity-Technologies/2d-extras development by creating an account on GitHub.

github.com

Download ZIP을 클릭하여 다운받으면 된다.

스크립트를 통해 사전 정의 해 놓은 타일 관련 알고리즘을 생산적으로 사용할수있다. 

이 2D 엑스트라는 Rule Tile, Animated TIle, Random Tile 등등등... 다양한 기능을 지원한다.

다운로드 받은 다음에 압축을 풀고, 폴더 자체를 드래그 하여 프로젝트 Assets 에 드롭하면 알아서 임포트 된다.

2D Extras 설명을 추후 따로 글을 작성하는걸로..


유니티 타일맵을 사용하는 가장 기본적인 방법이다.

먼저, 타일오브젝트들 (타일이미지) 타일팔레트는 서로 다른 폴더에 관리하자.

나중에 사용할 2D Extras의 사용자지정 타일들도 따로 폴더로 관리하는게 좋다.

 

1. 하이어라키창에서 Create > Tilemap

2. 자동으로 부모객체인 Grid와 자식객체인 Timemap 오브젝트가 생성된다.

3. Timemap 은 타일팔레트 로 그릴 수 있는 하나의 Layer가 된다.

4. 필요한 타일은 SpriteEditor 를 통해 잘라서 가져온다.

Tilemap을 여러개 만들어서 Photoshop의 Layer처럼 사용한다.

5. 타일맵 생성 후 그릴 타일팔레트(Tile Palette)를 만들어야 한다.

6. 유니티 상단 Window > 2D > Tile Palette 를 누르면 타일팔레트창이 활성화된다.

타일팔레트창의 상단 드롭다운 메뉴의 Create New TilePelette 를 클릭하면 경로를 지정하는 창이 뜰텐데, 타일팔레트를 관리할 폴더를 생성하여 넣어놓는다.

그러면 해당 폴더 안에 Prefab 아이콘처럼 생성된 팔레트 오브젝트가 생성된다.

 

7. 이제 타일 팔레트에 들어갈 타일 스프라이트들을 선택하여 해당 팔레트로 드래그 하면 타일 오브젝트를 생성하기위한 경로를 설정하는 창이 나온다. 이것 또한 Tile 관리 폴더를 생성하거나 지정하여 설정한다.

 

* 타일오브젝트가 되기 전의 타일 이미지는 Sprite 혹은 이미지로써 존재하지만, 타일팔레트에서 사용되어지기 위해서는 Tile 오브젝트로 생성해주어야 한다.

 

이미지로 존재하던 파일을 Tile 오브젝트로 생성하게되면

 

Tile 오브젝트 정보

 

위와 같이 참조할 Sprite와 Color , Collider Type 이라는 속성을 추가적으로 지니고 있는 Tile 오브젝트가 된다. 이 Tile이 참조하고있는 Sprite 를 변경하면 해당 타일로 칠해져있는 모든 참조 Sprite가 함께 수정되기 때문에 편리하다.

 

기존의 타일이 참조하고있던 Sprite

 

참조 Sprite를 수정하니 한꺼번에 바뀐다.

타일 팔레트창의 도구 사용방법은 직관적으로 이해할 수 있다.

 

유용한 단축키

[ ] 대괄호 키로 각 타일을 회전시킬수있다. 

shift 키를 누른상태로 브러쉬나 박스도구를 사용하면 지울 수 있다.

팔레트 자체를 수정하는것도 가능하다.

팔레트 상단의 Edit 를 누르면 된다.

Edit 누른다음 도구를 사용하여 팔레트를 수정할수있다.

 


 

Tilemap 오브젝트에는 Tilemap Collider2D 라는 충돌체 컴포넌트를 추가할 수 있다.

원하는 Tilemap 오브젝트에 Tilemap Collider 2D 컴포넌트를 추가하면 각 타일마다 충돌체가 씌워진다.

 

다만, 이 경우, 수많은 타일의 각 요소에 Collider2D 충돌체가 활성화되기 때문에 비효율적이기도 하고 의도치 않은

버그가 생길 수도 있다. (예를 들면 바닥 타일을 달리던 캐릭터가 갑자기 끼인다거나 하는 현상.)

이런 경우, 추가적으로 Tilemap에 Physics2D 의 Composite Collider 2D 컴포넌트를 추가한 뒤 설정 몇개만 해주면

해당 타일 컬라이더가 알아서 필요한 경계라인만 딱 잡아준다.

 

Composite Collider 2D 를 추가하게되면 Rigidbody 컴포넌트가 자동으로 추가가되는데 타입을 static 으로 변경 한 뒤(지형이나 오브젝트 타일일 경우) Tile Collider2D 의 Using Composite 를 체크해주면 Tile Collider2D가 통합된다.

 

오브젝트 타일에 충돌체를 추가한뒤 합친 모습

 

또한 Rigidbody의 Synchronous 옵션이 Composite Collider2D 의 경계에 변형이 일어났을 때에도 알아서 충돌체를 동기화 해준다.

따라서 타일팔레트의 지우개로 타일을 일부 지운다고 해도 자동으로 외부 아웃라인을 통합메쉬처럼 합쳐지도록 충돌체를 생성한다. Dynamic Collider 작업이 가능하다는 것이다.

 

Rigidbody2D의 Generation Type 설정


스크립트 가능한 타일은 무엇인가?

2D Extras 플러그인에 대한 기본적인 정보를 적어본다.

임포트가 완료되고 나면 프로젝트 창에서 Create > 를 누르면위와같이 2D Extras와 관련된 기능을 사용할수있는 메뉴가 활성화 된다.

 

2D Extras 메뉴 활성화

 

2D Extras는 Rule Tile , Anitated Tile, Random Tile 등을 사용할수 있다.

2D Extras의 보조 목적은 레벨을 한땀한땀 그리는 노가다로부터 해방되도록 편리한 기능을 제공해준다는 것이다.

 

대표적인 기능 몇가지를 소개하자면,

Rule Tile

각 타일 스프라이트의 좌우상하 전제조건을 걸어놓음으로써 알아서 경계라인타일과 중심 타일을 인식하여 레벨을 디자인할 수 있도록 도와준다. (지형을 그릴때 최적, 시간단축)

 

Animated Tile

타일팔레트에서 한번의 붓질로 애니매이션을 재생할 수도 있다.

(폭포, 용암, 등의 애니매이션 효과가 필요한 타일에 적용)

 

Random Tile

무작위 타일을 자동으로 그릴 수 있게 해준다. (랜덤 오브젝트나 지형물, 자연물타일에 최적)

 

2D Extras 의 기능들은 대부분 TileBase 를 상속받아 작성되었다.

TileBase의 기능들을 활용해 사용자가 원하는 방식으로 타일을 제어할 수도 있다.

여기서 주의할 점은 2D Extras로 만든 타일들을 타일팔레트에서 사용하려면 해당 2D Extras 타일을 타일팔레트로 드래그 & 드롭 해야한다.

 

2D Extras로 생성한 Animated Tile

2D Extras로 생성한 타일 아이콘은 Unity 아이콘이 그려져있다.

 

그대로 Tile Palette에 드래그앤 드롭 한다.

그대로 Tile Palette에 2D Extras로 만든 타일을 드래그앤 드롭해야 사전 정의한 타일을 사용할 수 있다.

만약 만든 타일과 같은 스프라이트나 타일을 그냥 팔레트에 넣어놓으면 아무 반응이 없으니 주의해야한다.

 

 

 

타일팔레트의 다양한 Brush모음

 

Unity Tile Brush는 Default Brush 말고도 작업속도를 올릴 수 있는 다양한 자동화 브러쉬들이 많다.

LineBrush 같은경우 라인 전체를 한번에 그릴 수 있게 도와준다. 

룰 타일과 결합하면 상당히 빠른 속도로 레벨 디자인이 가능해진다.

자세한 사용법은 메뉴얼을 참고하여 테스트해보면 된다.


 

타일작업시 참고할만한 정보들

> 지면 타일의(Platform Tile) Tile Collider2D의 Offset 위치를 조정하여

플레이어가 자연스럽게 지면을 밟도록 조정할 수 있다.

 

> Tilemap 오브젝트의 Tile Anchor 를 조정하여 지형 위의 (게임에 영향을 끼치지 않는) 다양한 장식들의 위치를

자연스럽게 조정할수있다.

 

> 여러개의 TileMap 오브젝트을 이용해 작업할때는

각 Tile Palette가 각 TileMap 레이어에 속해있는지를 확인하고 적용해야 한다.

무슨말이냐면, Background Tilemap은 Background Tile Palette를 사용해서 그렸는데, 실수로 Objects Tilemap에 Background Tile Palette 를 사용하여 칠하는 경우이다.

한마디로 레이어가 엉켜버리는 실수를 주의해야 한다는 거다.

 

막상 작업할때는 눈으로 확인하기가 힘들어 그냥 넘어가는 경우가 많은데 일이 커지면 상당히 피곤해진다.

Tilemap을 생성하면 나타나는 Scene 뷰의 Focus On 을 Tilemap으로 설정하면 각 Tilemap을 포커싱해서 확인하면서 작업할 수 있다.

Focus On의 Tilemap 활성화

> TileBase를 상속받아 원하는 방식대로 디자인할수있다.

움직이는 플랫폼을 스크립팅할수도 있다.

> 스크롤 뷰에서 배경 타일이나 오브젝트 알파값을 조정하면 약간 안개가낀 연출이 가능하다.

 

 

나중에 내가 작업하면서 필요한 정보들 계속 추가할 예정이다.

반응형

댓글