01 Tilemap 개요
Tilemap이란?
타일 형태의 리소스를 배치해 게임 월드를 표현하는 방법
Unity에서 제공하는 Tilemap 구성 요소
Tile Palette
- Tilemap 오브젝트에 배치할 Tile Asset들을 등록해 두는 저장소
- 팔레트에 있는 Tile Asset을 여러 속성에 따라 배치하거나 삭제할 수 있다
- ex) 현실에서 그림을 그리기 위해 물감을 짜두는 팔레트와 동일한 기능
Tile Asset
- 맵에 배치할 수 있는 하나의 타일 (Sprite, Color, Collider Type과 같은 속성을 설정 가능)
- ex) 팔레트에 짜두는 물감
Grid 오브젝트
- 자식으로 배치되는 Tilemap 오브젝트들을 관리하는 역할
- Cell Layout, Cell Swizzle 정보를 이용해 배치되는 맵의 방식을 Rectangle, Hexagon, Isometric, Isometric Z As Y 등으로 설정할 수 있다
Tilemap 오브젝트
- Tile Asset을 배치하는 공간으로 실제 게임에 보이는 타일 형태의 게임 월드
- Grid 오브젝트의 자식으로 여러 개의 Tilemap 오브젝트 등록 가능 (Layer 구분)
- ex) 그림을 그리는 도화지
02 Tile Palette
“Tile Palette” View 열기
새로운 팔레트 생성
- Name : 팔레트의 이름
- Grid : 타일 배치 방식
- Rectangle, Hexagon, Isometric, Isometric Z As Y
- Cell Size : 셀의 크기
- Automatic, Manual
현재 프로젝트의 Assets 폴더 내부에 위치해야 한다.
Platform이라는 Palette가 생성된 것을 확인할 수 있다.
03 Tile Asset
Tile Asset을 생성하고 이미지를 넣어 설정한다.
Tile Palette에 드래그하여 등록한다.
04 Tilemap 오브젝트
실제 타일을 배치한다.
Tilemap 오브젝트 생성
오브젝트를 생성하면 Grid 오브젝트의 자식으로 Tilemap이 생성된다.
Gird 게임오브젝트
현재 자식으로 있는 Tilemap 게임오브젝트들을 관리(여러 개의 Tilemap을 자식으로 가지고 관리할 수 있다.)
Grid 컨포넌트
- Cell Size : Grid 내에 각 셀의 크기
- Cell Gap : Grid 내의 각 셀 사이의 간격
- Cell Layout : 셀의 나열 방식
- Cell Swizzle : 축의 나열 변경
- Swizzle이 xyz일 때 (0, 1, 1)이라면, Swizzle을 yxz로 바꾸면 (1, 0, 1)이 된다
Tilemap 컴포넌트
- 현재 Tilemap 오브젝트에 대한 기본 설정(Tilemap에 표현되는 모든 타일의 색, 각 타일의 중심점, 방향 등을 설정)
- Scence View에서 현재 타일맵 오브젝트에 표현될 타일들을 그릴 수 있다.
Tilemap Renderer 컴포넌트
- 현재 Tilemap 오브젝트가 화면에 그려지는 방법에 대해 설정(Material, 정렬 기준, 정렬 순서 등)
05 Tilemap에 Tile Asset 배치
Tile Palette 기능
Select an area of the grid (단축키 : S)
팔레트나 Tilemap 오브젝트(Scene View)에 있는 타일을 선택 (하나 또는 복수 선택 가능)
Move selection with active brush (단축키 : M)
- 팔레트나 Tilemap 오브젝트(Scene View)에 있는 타일을 이동
- 단축키 S로 선택을 한 후에 드래그로 이동을 한다.
Paint with active brush (단축키 : B)
팔레트에서 선택한 타일을 Tilemap 오브젝트(Scene View)에 배치 (마우스 클릭 위치)
Paint a filled box with active brush (단축키 : U)
- 팔레트에서 선택한 타일을 Tilemap 오브젝트(Scene View)에 배치 (사각형 범위)
- Shift를 누른 상태로 드래그를 하면 영역 내의 타일들이 삭제된다
Pick or marquee select new brush (단축키 : I)
팔레트나 Tilemap 오브젝트(Scene View)에 있는 타일을 복제해서 선택
Erase with active brush (단축키 : D)
팔레트나 Tilemap 오브젝트(Scene View)에 있는 타일을 삭제
Flood fill with active brush (단축키 : G)
- 팔레트에서 선택한 타일을 Tilemap 오브젝트(Scene View)에 배치
- 빈 공간에 사용하면 빈 공간을 채우기
- 이미 타일이 존재하는 곳에 사용되면 연결되어 있는 동일한 타일들을 모두 교체
06 Tilemap 충동 처리
Tilemap의 충돌 처리는 Tilemap Collider 2D 컴포넌트를 통해 할 수 있다.
컴포넌트를 추가하면 Scene View에 충돌되는 범위를 보여준다.
Tile Asset을 선택하고 Collider Type을 설정한다.
- Sprite : 원본 이미지의 형태대로 충돌 할 수 있는 폴리곤(Polygon) 충돌 처리
- Grid : 사각형 형태로 충돌 처리
다음과 같이 설정하면 하나의 충돌범위로 설정된 것을 확인할 수 있다.
충돌을 위한 Capsule Collider 2D와, 중력과 물리를 받기 위한 RigidBody 2D를 적용시켜 실행한다.
https://youtu.be/OuJ9qSA_w3Q?si=lvV0p7SoiwnJCdEj
아래의 내용은 위의 강의를 참고하여 진행했다.
07 GameObject Brunch
우리가 다양한 컴포넌트를 적용하고, 상호작용을 설정할 수 있는 게임 오브젝트를 Tilemap 오브젝트에 배치하는 기능이다.
상호작용이 가능한 오브젝트를 생성하고 충돌처리를 위해 CircleCollider2D 컴포넌트를 추가한다.
Item_Coin 오브젝트를 Project View로 드래그해서 프리팹을 생성하고, Hierarcht View의 Item_Coin 오브젝트는 삭제한다.
충돌했을 때 오브젝트를 삭제하는 CollisionCheck 스크립트를 생성한다.
Collider2D 컴포넌트의 IsTrigger가 체크되어 있을 때 충돌하는 순간 1회 호출되는 OnTriggerEnter2D 메소드에서 Destroy(GameObject);로 해당 스크립트를 가지고 있는 게임 오브젝트를 삭제한다.
Item_Coin 프리팹에 CollisionCheck 컴포넌트를 추가한다.
Tile Palette에서 GameObject Brush로 변경하고 Cells에 Item_Coin 프리팹을 등록한다.
Tilemap 오브젝트를 선택하고 GameObject Brush 탭으로 되어 있을 때 Scene View에서 프리팹을 배치한다.
실행하면 Player와 Item_coin이 충돌했을 때 Item_Coin 오브젝트가 삭제된다.
08 Animated Tile
새로운 씬을 생성하고 씬을 저장한 후에 진행한다.
애니메이션이 가능한 타일 생성
생성한 Animated Tile을 선택하면 Animation에 사용할 이미지 개수를 입력하는 Number of Animated 파라미터가 있다.
4개의 이미지를 등록한다.
Tilemap 오브젝트를 생성하고 Tile Palette에 생성했던 Animated Tile을 등록한다.
Tile Palette에 등록한 Animated Tile을 선택하고 Scene View에 Tilemap 오브젝트를 배치한다.
게임을 실행하면 등록한 이미지 4개가 순차적으로 바뀌며 애니메이션된다.
09 Rule Tile
맵을 구성할 때 하나의 발판을 만들 때도 부위가 나뉘게 되며, 이를 배치하기에 시간이 너무 많이 소요된다.
이러한 단순 작업을 쉽게 제공하는 기능이 Rule Tile이다.
Rule Tile
타일이 배치되었을 때 오른쪽에 타일이 존재한다, 존재하지 않는다 등과 같이 규칙을 정해두면 규칙에 따라 타일 오브젝트, 이미지 등이 자동으로 설정된다.
Rule Tile을 생성한다.
생성한 Rule Tile을 선택하면 규칙에 만족하는 타일이 없을 때 보이는 기본 타일 Default를 설정할 수 있다.
Number of Tiling Rules에 입력하는 개수만큼 Tiling Rules 리스트가 생성된다.
NotThis와 This 설정으로 이미지 출력을 결정한다.
- GameObject : 오브젝트를 등록하면 해당 조건을 만족할 때 오브젝트가 배치됨
- Collider : 충돌처리
- Output : Random으로 설정하면 여러 장의 이미지를 등록해 그중 임의의 이미지가 배치되도록 하고, Animation으로 설정하면 애니메이션이 가능한 타일이 배치됨
Rule Tile Asset도 Tile Palette에 등록해서 사용한다.
'PBL > Unity' 카테고리의 다른 글
유니티 3D 기초 - Navigation Mesh (0) | 2024.05.13 |
---|---|
유니티 3D 기초 - CharacterController 기반의 오브젝트 이동 (0) | 2024.05.07 |
유니티 2D 기초 - 2D Animation 실습 (0) | 2024.04.30 |
유니티 2D 기초 - 2D Sprite / Animation (0) | 2024.04.30 |
유니티 2D 기초 - 플랫폼 게임에서의 플레이어 이동, 점프 구현 (0) | 2024.04.30 |