소소한 나의 하루들

탑다운 2d RPG(1) - 도트 타일맵으로 쉽게 준비하기 본문

개발/유니티

탑다운 2d RPG(1) - 도트 타일맵으로 쉽게 준비하기

소소한 나의 하루 2024. 1. 29. 21:59

출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared

 

📚 유니티 기초 강좌

유니티 게임 개발을 배우고 싶은 분들을 위한 기초 강좌

www.youtube.com

지금까지는 Tile Palette에 직접 리소스를 드래그하여 적용시켰다.

이제는 Role Tile을 사용해본다.

Role Tile은 규칙을 정할 수 있는 타일이다.


#1. 플러그인 설치

*Role Tile은 유니티에서 기본으로 제공하지 않아서 따로 가져와야 한다. 최신 버전은 유니티에서 정식 지원한다.

Edit>Project Setting>Package Manager: Enable Pre-releases package 체크

Windows>Package Manager>2D Tilemap Extras Unlocked 클릭

(구글에서 2D Extra 검색>Github 클릭>Releases(배포) 클릭>현재 유니티 버전에 맞는 Zip 다운로드)>

다운받은 zip 파일을 압축을 풀고, 파일을 유니티의 Assets에 드래그하여 적용한다.

https://gamedoridori.tistory.com/79

 

[Unity] 2D Tilemap Extras 설치하기 (2D 타일맵 엑스트라)

원래는 유니티에서 공식지원 하지는 않았는데 이제는 공식지원이 되나 봅니다. Edit - Project Settings에서 Package Manager로 들어갑니다. Enable Preview Packages를 체크해줍니다. Window - Package Manager로 들어가

gamedoridori.tistory.com

앞으로 사용할 에셋은 아래 에셋을 사용한다.

https://assetstore.unity.com/packages/2d/characters/top-down-2d-rpg-assets-pack-188718

 

Top-Down 2D RPG Assets Pack | 2D 캐릭터 | Unity Asset Store

Elevate your workflow with the Top-Down 2D RPG Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.

assetstore.unity.com


#2. 롤 타일

우클릭>Creat>2D>Tiles에서 다양한 타입의 타일들을 볼 수 있다. 여기서 Rule Tiles를 선택하여 생성한다.

원하는 이름(타일명)으로 설정 후, Inspector에서 Sprite부터 잡아준다.

+를 눌러서 룰 타일을 추가한다.

그리고 3x3 총 9칸의 타일을 구상하고 9개의 규칙 추가한 뒤, 각 방향 스프라이트를 룰 타일에 지정한다. (위 3개/중간 3개/아래 3개)

그리고 스프라이트 모양에 맞게 방향 규칙을 설정한다.

해당 규칙의 sprite를 중앙에 있다고 가정하고, 상하좌우/대각선으로 인접한 타일이 있는지 규칙을 설정한다.

인접한 타일이 있으면: 초록색 화살표/ 없으면: 빨간색 화살표

 

추가한 Role Tile 파일을 드래그해서 Tile Palette 창에 적용한다. 그리고 Gress의 규칙을 설정하면 자동으로 반영된다.

이렇게 규칙을 설정하면 어떠한 크기로 그려도 (대각선 드래그까지도) 전부 규칙이 반영된다.

타일맵을 2개 이상 작업할 때는 Scene창에 뜨는 Focus On 기능을 활용할 수 있다.

서로 다른 Role Tile을 같은 오브젝트에 그리면 안된다. (다른 룰타일 간에는 규칙 적용이 안되므로)


#3. 애니메이션 타일 (타일에 애니메이션 적용)

Rule Tile을 사용해서 애니메이션 타일을 사용해본다. 새 Rule Tile을 만들고, 규칙을 추가한 후, Output을 Animation으로 설정한다. 프레임 개수대로 Size를 설정하고, 프레임을 채우면 완성이다.

속도도 조절 가능하다.


#4. 외부 경계

플레이어가 타일맵 밖을 못나가게 해야하니까, **Border Line(외부 경계)**를 만든다.

이것 역시 Grid 오브젝트 아래에 Tilemap을 만들고, Composite Collider 2D 컴포넌트와 Tilemap Collider 2D 컴포넌트를 생성한다.

앞으로 물리 기반 체계가 들어갈 때에는 Rigidbody 2DTilemap Collider 2D(타일맵 콜라이더)Composite Collider 2D(복합 콜라이더)가 꼭 들어갈 것이다. (타일맵 콜라이더는 복합맵 콜라이더와 사용하면 좋다.)

: Tilemap Collider 2D는 Composite Collider 2D에게 모양을 위임한다.

*Tilemap Collider 2D 컴포넌트가 아닌 Box Collider 2D 컴포넌트를 추가하면 플레이어가 해당 오브젝트 영역 바깥에 위치하는 문제가 생기므로 꼭 Tilemap Collider 2D 컴포넌트를 추가한다.

 

맵의 외부를 아무 타일맵 블럭으로 둘러싸고, Tilemap Renderer 컴포넌트의 Mask Interaction옵션을 빌려서 보이지 않게 할 수 있다. (Tilemap Renderer에서 설정)

Visible inside Mask (Mask 안에서 보임 ) / visible Outside Mask(Mask 밖에서 보임)

: Mask도 없으니까, 보이지 않음
*최근 유니티6버전(2023)으로 동일하게 진행했을 때 동일 계층의 다른 Tilemap 오브젝트 렌더링에도 영향을 주는 것을 확인할 수 있다. 따라서 Mask Interaction과 함께 Tilemap Renderer의 Mode 설정을 Chunk가 아닌 Individual로 설정해줘야한다.

Tilemap Collider 2D에서 Used By Composite를 체크하여 Composite Collider 2D에게 모양을 위임했을 때, collider(충돌박스)가 없어져버리는 경우가 있다.

그럴 때는 Composite Collider 2D에 가서 Geometry Type을 아무거나 설정하면 보이니, 한번만 설정했다 다시 원래대로 돌아온다. (Outlines)

 

탑다운 환경 설정하기

*플레이어 뿐만 아니라 Border Line의 Rigidbody 2D 컴포넌트에도 Gravity Scale을 0으로 설정해야 플레이어가 아래로 떨어지지 않는다.

*맵의 리지드바디 타입을 Static으로 바꿔주어야 중력에 영향을 받지 않고, 고정될 수 있다. (Border Line도 마찬가지)

*타일맵에도 Rigidbody 2D 컴포넌트가 있다면 Gravity Scale이 0인지 확인하고, 플레이어가 이동가능한 타일맵은 콜라이더 컴포넌트가 있으면 안된다.


#4. 픽셀 퍼펙트

Scene에서 타일맵 한가운데 줄이 쫙 그어진 것처럼 깨지게 될 때에는 픽셀 퍼펙트라는 것을 사용해야한다.

이것도 유니티에서 제공하지 않는데, Package Manager에서 2D Pixel Perfect를 설치해준다.

2D Pixel Perfect는 픽셀 깨짐을 해결하는 카메라 플러그인이다.

설치한 후, Main Camera 오브젝트에서 Pixel Perfect Camera 컴포넌트를 추가해준다.

Pixel Per Unit과 해상도를 잘 맞춰야한다. Assets Pixel Per Unit과 동일하게 맞춰준다. (Sprite의 Pixel Per Unit이 16이라면, Pixel Perfect Camera의 Assets Pixel Per Unit도 16으로 설정)

Comments