2D 타일맵으로 아트와 게임플레이를 만드는 방법
Unity 2022 LTS로 제작된 샘플 2D 하향식 농업 시뮬레이션 게임인Happy Harvest에서 Unity 타일맵 시스템이 어떻게 사용되는지 알아보세요.
아티스트를 위한 2D 게임 아트, 애니메이션 및 조명전자책에서 이러한 기술과 아트 및 애니메이션에 대한 더 많은 기술을 찾아보세요.
Happy Harvest의 효과와 시각 효과를 재현하는 방법을 알아보려면 이 시리즈의 다른 기사를 읽어보세요.
- 유니버설 렌더 파이프라인의 2D 빛과 그림자 기술
- Unity 2022 LTS에서 2D 캐릭터에 애니메이션을 적용하는 방법
- VFX 그래프 및 셰이더 그래프를 사용한 2D 특수 효과(곧 제공 예정)
지금 Unity 에셋 스토어에서Happy Harvest를다운로드하세요.
Unity 타일맵 시스템을 사용하면그리드에 배치된 작은 스프라이트인 타일을 사용하여 게임 세계를 만들 수 있습니다. 레벨을 하나의 큰 이미지로 디자인하는 대신 전체 레벨에서 반복되는 벽돌 같은 조각으로 분할할 수 있습니다. 이는 시뮬레이터나 RPG처럼 걸을 수 있는 영역이 넓은 게임에 특히 유용합니다.
타일맵은 아트 제작 시간은 물론 메모리 및 CPU 사용량을 절약하는 데 도움이 됩니다. 타일은 전용 렌더러로 렌더링할 수 있고, 화면에 보이지 않는 타일은 비활성화할 수 있기 때문입니다. 브러시 도구를 사용하면 그리드에 타일을 효율적으로 칠할 수 있으며 페인팅 규칙을 사용하도록 스크립트를 작성할 수 있습니다. 또한 보다 효율적인 테스트 및 편집을 위해 자동 충돌 생성 기능도 제공됩니다.
타일시트를 제작할 때 필요하지 않은 경우 레이어 타일맵을 결합하지 않는 것이 중요합니다. 이렇게 하면 오버드로를 줄이는 데 도움이 됩니다. Happy Harvest 에서는 모든 타일맵이Grid GameObject 아래에 있습니다. GroundBase라는 타일맵에 모든 지상 아트웍이 어떻게 포함되어 있는지 확인할 수 있습니다. 이러한 모든 타일은 타일맵 렌더러에서 렌더링 Modeto청크를설정하여 동시에 일괄 처리됩니다. 이는 성능을 최적화하는 데 도움이 될 수 있습니다.
샘플의 조약돌 경로는 타일 아트워크 레이어로 생성되었을 수 있습니다. 하나는 조약돌용이고 하나는 잔디용입니다. 이것은 예술 창작의 관점에서 보면 편리할 수 있지만 픽셀이 겹쳐져 있기 때문에 성능이 떨어집니다. 별도의 깊이 평면이 필요한 인스턴스와 같이 필요한 경우에만 별도의 타일맵을 생성하세요.
Unity 타일맵 시스템의 작동 방식에 대한 포괄적인 소개를 보려면아티스트를 위한 2D 게임 아트, 애니메이션 및 조명전자책을 다운로드하세요.
Happy Harvest 의 타일은 메인 경로나 잔디밭처럼 게임에서 광범위하게 사용되는 타일맵에 우선순위를 두고 섹션별로 생성되었습니다. 이러한 지도는 다양한 모양의 경로를 만드는 데 사용되므로 더 많은 타일이 필요합니다. 대조적으로, 정사각형 타일맵으로 배치된 배경 소나무는 더 적은 타일을 필요로 합니다.
일반적으로 수직이고 캐릭터 앞이나 뒤에 렌더링되는 소품은 다른 정렬 레이어에서 GameObject로 분리됩니다. 그러나2D Tilemap Extras 패키지에 포함된 기능인 GameObject Brush는 나무 울타리와 같은 일부 개체를 타일맵 그리드에 배치하는 데 사용됩니다. 이러한 소품을 보다 유기적인 패턴으로 분산시키려면 타일맵 외부의 계층 구조에 있는 GameObject에 소품을 배치할 수 있습니다.
타일맵의 보조 텍스처
Tilemaps 폴더 아래의 모든 타일맵에는일반 맵 및 마스크 맵 텍스처라는 대응 항목이 있습니다. 이는 동일한 치수와 레이아웃을 공유하지만 조명을 표시하기 위해 칠해져 있습니다. 샘플에서 조명이 어떻게 생성되었는지 알아보려면 "유니버설 렌더 파이프라인의 2D 빛과 그림자 기술" 기사를 읽어보세요.
노멀 맵과 마스크 맵 텍스처는 스프라이트 편집기에 설정된 타일의 기본 텍스처에 추가됩니다. Happy Harvest에서는 마스크 맵을 사용하여 캐릭터와 소품에 대한 림 라이트 실루엣 효과를 만듭니다. 하지만 대부분의 타일은 지면에 사용되기 때문에 림라이트가 필요하지 않습니다. 이것이 테두리 효과를 위해 생성된 빛을 반사하지 않기 위해 이 타일 세트의 텍스처 대부분이 검은색인 이유입니다. 지붕에 사용되는 건물 타일은 예외이며 타일의 가장자리가 강조 표시됩니다.
타일 팔레트도구는Happy Harvest에서 각 타일맵의 그리드를 타일로 효율적으로 채우는 데 사용됩니다. 경로 모양의 가장자리나 모서리를 수동으로 배치하는 것은 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 경로나 기타 타일 기반 모양을 변경할 때마다 수동 작업을 반복해야 합니다. 이를 방지하려면규칙 타일기능을 사용할 수 있습니다.
규칙 타일은 모양의 인접한 타일을 기반으로 올바른 테두리 타일을 그립니다. Happy Harvest프로젝트 폴더에는Palette_Tiles라는 타일 팔레트가 있습니다. 팔레트의 첫 번째 행에는 잔디가 있는 흙과 같이 자주 사용되는 타일이 포함되어 있습니다. 이것은 규칙 타일입니다. 프로젝트 뷰에 자산을 표시하려면 Inspector에서 GameObject를 선택하세요. 그런 다음 이 자산을 선택하여 이 규칙 타일의 설정을 볼 수 있습니다.
프로젝트에 적용 가능한 경우 이러한 타일 자산을 재사용하거나 텍스처 위에 페인팅하여 시간을 절약할 수 있습니다.
샘플의 모든 타일은 크기와 모양이 동일하며 동일한 Grid GameObject에 포함되어 있습니다. 이는 타일맵 수를 낮게 유지하는 데 도움이 됩니다. Terrain Manager라는 구성 요소가 Grid GameObject에 연결되어 다음 섹션에서 설명하는 게임 플레이 가능성을 제공합니다.
Grid GameObject 아래의 타일맵 중 일부는 다음과 같습니다.
- 수중타일: 수중 타일, 절벽, 연못 지역의 녹지로 사용됩니다.
- 물: 이 타일은 물 애니메이션을 시뮬레이션하기 위해 셰이더 그래프에서 만들어진 Sprite-Lit-Material이라는 다른 셰이더와는 다른 셰이더를 사용합니다.
- 지상기지: 입면 타일의 틈을 메우기 위해 길 타일, 잔디, 진흙, 돌로 구성된 지상 작품입니다.
- ObjectsInTiles: 이는 울타리와 같이 타일 팔레트의GameObject Brush를사용하여 타일맵에 칠해진 게임 오브젝트에 사용됩니다.
- TilledTilemap: 이 타일은 코드에서 씨앗을 심을 수 있는 타일을 감지하는 데 사용됩니다.
- WateredTileLayer: 이는 게임 로직에서 타일이 젖어 보이도록 만드는 데 사용됩니다. 타일이 건조되면 "젖은" 타일이 제거됩니다.
- 창고, 집: 이 타일맵은 창고와 집을 만드는 데 사용됩니다. 타일맵을 사용하여 건물을 만들면 아티스트는 건물의 일부가 동일한 텍스처를 사용하기 때문에 건물의 모양과 크기를 보다 효율적으로 변경하고 텍스처 공간을 절약할 수 있는 유연성을 얻을 수 있습니다.
- 수확고: 이는 하나의 GameObject 아래에 모든 식물을 그룹화하고 Terrain Manager에서도 사용됩니다.
Grid GameObject에 연결된 Terrain Manager 스크립트는 타일 변경 사항을 처리하고 타일을 사용하여 작물을 추적합니다. 그리드 기반 게임플레이를 설정하는 데 유용할 수 있는타일맵 API를사용하여 2D에서 항목의 위치를 보다 쉽게 식별할 수 있습니다.
이 MonoBehaviour 클래스는GroundData및CropData라는 두 개의 일반 클래스를 생성합니다. 여기에는 타일이 젖어 있는 것처럼 보이는 시간, 식물이 자라는 속도, 죽기 전에 수확하지 않고 지속되는 시간 등 게임플레이 관련 변수가 포함됩니다.
Terrain Manager 스크립트는 다음을 포함하여 게임플레이 목적으로 사용되는 타일맵과 타일을 참조합니다.
- 지상 타일맵: 이는 플레이어가 씨앗을 파고 심을 수 있는 위치를 나타내는 토양 타일이 포함된 타일맵을 참조합니다. 이 타일맵 외부의 타일을 파헤쳐도 아무 일도 일어나지 않습니다.
- 타일맵 자르기: 이는 작물의 상위 개체인 타일맵 게임 개체를 참조합니다. 여기서 Tilemap API를 사용하면 자르기 타일을 배치, 업데이트 및 제거할 수 있습니다.
- 물 타일맵: 이를 사용하여 시뮬레이션된 물로 경작된 토양 타일 위에 페인트를 칠하고, 이 타일이 심고 자랄 준비가 되었음을 플레이어에게 시각적으로 전달합니다.
- 물을 뿌린 타일: 이는 물 그래픽이 포함된규칙 재정의 타일로, 새로운 규칙을 설정하지 않고도 규칙 타일의 변형이 포함된 타일을 생성할 수 있습니다.
- 경작 가능한 타일: 이는 플레이어가 굴착에 사용할 수 있는 타일을 식별하는 데 사용됩니다.
- 타일 타일: 이것은 경작된 토양의 시각적 요소를 그리는 데 사용되는 규칙 타일입니다.
Terrain Manager 스크립트에는 Tilemap API를 사용하여Vector3int위치 형식의 타일 정보를 읽고 이에 따라 타일을 업데이트하는 기능이 포함되어 있습니다. 이러한 함수는 PlayerController가 함수를 트리거할 때 다양한 도구에서 호출됩니다.
보기 좋은 시각적 효과를 보장하려면 번짐 현상이나 보간 및 가장자리 스무딩으로 인한 타일 사이의 작은 간격을 피하는 것이 좋습니다. 이는 필터 모드가 포인트(필터 없음)로 설정되어 있기 때문에 스프라이트가 매끄럽게 처리되지 않는 픽셀 아트 게임에서는 발생하지 않는 현상입니다. Happy Harvest에서 타일 스프라이트에는 간단한 설정을 통해 더 나은 프로젝트 구성, 성능 및 제어를 제공하는Sprite Atlas가포함되어 있습니다.
타일 시트를 사용하지 않는 경우 Sprite Atlas를 사용하여 타일맵 렌더러의 이음새 및 내부 정렬을 지원하는 것이 좋습니다. 일부 기본 설정은 대부분의 스프라이트에 작동하지만 타일맵에는 약간의 조정이 필요할 수 있습니다. 패킹 시 스프라이트 회전 방지 또는 알파 확장과 같은 기능은 타일의 가장자리를 더 선명하게 유지하는 데 도움이 됩니다.
완벽하게 연결되는 타일을 만들고, 반복을 피하고, 장면을 읽기 쉽게 유지하는 방법을 배우는 것은 시행착오를 경험할 수 있습니다. 아티스트를 위한 전자책 2D 게임 아트, 애니메이션 및 조명에서 타일맵 시스템에 대해 자세히 알아보세요.
다음 블로그 게시물에서는 Unity로 만든 복고풍 2D 게임을 강조하고 더 많은 2D 개발 팁을 제공합니다.
- Skul의 깔끔한 정복을 위한 2D Pixel Perfect: 히어로 슬레이어
- 레트로 16비트 게임용 Unity 프로젝트를 설정하는 방법
- 레트로 8비트 게임용 Unity 프로젝트를 설정하는 방법
- 2D 게임을 위한 훌륭한 팁이 담긴 번개 라운드
또한 다른 2D 데모인The Lost Crypt및Dragon Crashers도확인해 보세요.
Unity 모범 사례 허브에서 고급 프로그래머, 아티스트, 기술 아티스트, 디자이너를 위한 더 많은 리소스를 찾을 수 있습니다.