본문 바로가기
공부/Unity

Tilemap (feat. World Building)

by Piva 2021. 4. 9.

  동아리 이번 주 스터디 주제가 World Building 이었다.

  의도는 '어느정도 맵 구현하고 그래와라' 였겠는데 의도를 제대로 곡해하고(멍청해서) 뭔가 자료조사를 잔뜩 했다. 어쨌든 적어두면 자료 백업으로 언젠간 보겠지 싶어서 끼적여둠.

 

 


Tilemap

: Tile Asset들을 저장하고 관리하여 2D 레벨을 만드는 시스템.

  • 기본적으로 설치된 패키지가 아니기 때문에, Package Manager를 통해 다운로드하여 사용할 수 있음.
  • Tilemap 생성 시, Grid 컴포넌트가 자동으로 부여된 게임 오브젝트가 생기며 이는 타일을 설치할 때의 일종의 가이드라인의 역할을 수행함.
  • Tile을 생성하고, 지정하기 위해서는 Tile Palette를 사용함.
  • Tile은 굳이 정사각형 모양일 필요 없으며, Isometric Tilemap, Hexagonal Tilemap을 사용할 수도 있음.

Unity 공식 문서에 나온 Isometric Tilemap 예시 사진

  • 또한, 일단 Grid의 Size를 조절함으로써 타일의 비율을 바꿀 수 있기는 함.

Grid 컴포넌트

 

Tile Palette

: 새로운 Tilemap을 생성하고, 생성한 Tilemap을 바탕으로 타일을 칠할 수 있게 해주는 툴.

 

  • 위의 도구들이 Tilemap에 타일을 칠할 때 사용되는 도구들이며, 해당 도구들은 생성한 Tilemap Palette 자체를 수정하는 데에도 사용할 수 있음. (밑의 Edit을 눌러서 Palette를 수정하는 것이 가능)
  • Palette를 생성하고, 거기에 Tile Asset들을 지정하여 넣음으로써 Tile을 커스텀하는 것이 가능.
    이 때 Tile Asset은 타일로 사용할 Sprite들을 Palette로 드래그&드롭하면 자동적으로 생성된다.
  • Palette를 조작하는 데에는 이런저런 단축키가 있음. 써본 적 없어서 그냥 이미지로만 첨부함.

  • Tile을 칠할 때 사용하는 것이 브러시. 기본 브러시는 한 번에 한 칸 밖에 칠하지 못하지만, Unity 측에서 깃허브를 통해 제공하는 추가 파일들을 사용하면 다양한 브러시들을 활용할 수 있음.
    (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

 

Tilemap Component

: Tilemap을 생성하면 자동적으로 생성되는 컴포넌트.

  • Animation Frame Rate : Unity에서 타일 애니메이션을 재생하는 프레임률. 만약 2로 설정할 경우, 유니티는 애니메이션을 2배 더 빠르게 재생.
  • Color : 타일에 적용할 색상. 흰색은 타일 본연의 이미지가 그대로 나옴.
  • Tile Anchor : Tilemap 위의 Tile에 적용되는 Offset 값.
  • Orientation : Tile을 어느 축 기준으로 Tilemap에 정렬할지 선택.

 

Tilemap Collider 2D

: Tile에 대한 Collider를 생성함.

  • 이 때, 각 Tile에 대한 ColliderSprite Editor에서 지정 및 수정하는 것이 가능함.
  • Offset : Collider에 대한 오프셋을 지정함. (ㄹ이걸,,왜지금보ㅏ서,,,)
  • Used By Composite : Composite Collider 2D의 영향을 받을 것인지 아닌지를 결정하는 속성.
    Composite Collider 2D 를 사용하고자 할 경우 해당 속성이 켜져있어야 함.

    (저거 체크 안 해놓고 왜 적용이 안 되는 거냐며 한참을 지웠다 넣었다 지웠다 넣었다 했어서 강조함)

 

Composite Collider 2D

: Collider가 겹쳐있는 경우, 겹쳐져있는 Collider들을 병합하여 하나의 Collider로 만듦.

  • Tilemap에서는 각 Tile들의 Collider를 합쳐주지 않을 경우, Player의 ColliderTile 사이 틈에 끼어서 움직이지 못하는 불상사가 일어날 수도 있기 때문에, Composite Collider를 사용하여 Tilemap들의 Collider를 병합함.
  • 이를 이용하기 위해서는 꼭 RigidBody가 필요함. (Composite Collider 2D 설정 시 자동으로 RigidBody도 딸려옴.)
    ※ 다만 RigidBody를 적용하면 중력도 적용되어 플랫폼이 낙하할 수 있기 때문에 RigidBody를 Kinematic으로 바꿔놓아야 함.

 

Rule Tile

: Tile에 규칙을 설정하여, 하나하나 직접 칠해주지 않더라도 타일들을 규칙에 따라 자연스럽게 이어주는 기능.

Unity에서 제공하는 2D 에셋에 미리 설정되어 있는 룰 타일.

 

  • 초록 화살표 : 해당 방향에 같은 룰 타일이 놓여져 있을 경우.
  • 빨간 X : 해당 방향에 룰 타일이 놓여져 있지 않을 경우.
  • 이 외에도 회전, 반전 등에 대한 여러 규칙을 설정해 줄 수 있음.

 

번외) Sprite Shape

: Sprite를 휘게 하거나, 모양을 채우는 등의 다양한 활용이 가능한 기능.

Unity Sprite Shape 소개 영상에서 가져옴.

Unity 에서 Sprite Shape에 대해 언급한 장점은 다음과 같음.

  1. 코드가 필요 없음.
  2. 그렇지만 코드를 통해서 확장될 수도 있음.
  3. 시간이 적게 들어감.

  개인적으로는 플랫폼을 좀더 유연하게+편하게 만들 수 있다는 점에서 언젠가 한 번 써보고 싶음. 비단 플랫폼 뿐 아니라, 덩쿨과 같은 장식물에 대해서도 적용할 수 있다는 점까지.

'공부 > Unity' 카테고리의 다른 글

Raycast & LayerMask (쪼까 추가  (0) 2021.04.18
Unity Animation  (0) 2021.03.22
Input 정리  (0) 2021.03.12