2D 게임을 만들려면 먼저 게임 원근과 아트 스타일을 정해야 합니다.
2D 게임을 만들려면 Unity 프로젝트를 설정한 다음 관련 개념을 다음 순서대로 숙지하십시오.
게임 오브젝트는 캐릭터, 프랍, 풍경 등을 나타내는 Unity의 기본 오브젝트입니다. 게임의 모든 오브젝트는 게임 오브젝트에 해당합니다.
게임 오브젝트는 게임에 포함된 항목을 나타냅니다. 레벨을 빌드하기 위해 게임 오브젝트를 배치하는 공간은 씬이라고 합니다. Unity의 씬은 항상 3D입니다. Unity에서 2D 게임을 만들 때는 보통 3차원(Z 축)을 무시하지만, 예를 들어 2.5D 게임을 만들 때처럼 특수한 경우에는 3차원을 사용할 수 있습니다.
게임 오브젝트의 동작은 컴포넌트라는 기능 블록에 의해 정의됩니다. 다음 컴포넌트는 2D 게임의 기본 요소입니다.
Transform: Transform 컴포넌트는 씬 속 각 게임 오브젝트의 포지션, 회전과 스케일을 결정합니다. 모든 게임 오브젝트에는 Transform 컴포넌트가 있습니다.
Sprite Renderer: Sprite Renderer 컴포넌트는 스프라이트를 렌더링하고 씬에서 표시되는 모습을 제어합니다.
Cameras: 월드를 캡처하여 플레이어에게 표시하는 기기입니다. 카메라를 직교로 설정하면 카메라 뷰의 모든 원근감이 제거됩니다. 등거리 게임이나 2D 게임을 만드는 데 특히 유용한 기능입니다.
Collider 2D: 이 컴포넌트는 물리적 충돌을 위해 2D 게임 오브젝트의 모양을 정의합니다. 2D 물리를 참조하십시오.
컴포넌트는 C# 클래스를 UI로 나타낸 것입니다. 스크립트를 사용하여 컴포넌트를 변경하고 컴포넌트와 상호작용하거나, 새로운 컴포넌트를 만들 수 있습니다. 자세한 내용은 스크립팅 섹션을 참조하십시오.
모든 2D 게임은 스크립트를 필요로 합니다. 스크립트는 플레이어의 입력에 응답하여 게임플레이의 이벤트가 적시에 발생하게 합니다.
Unity에서 스크립트를 사용하는 방법은 스크립팅 개요에서 자세히 알아볼 수 있습니다. Unity Learn의 스크립팅 기초 교육 과정도 참조하십시오.
스크립트는 게임 오브젝트와 연결되어 있으며, 만든 스크립트는 모두 MonoBehaviour 클래스를 상속합니다.
스프라이트는 2D 그래픽 오브젝트입니다. 스프라이트는 모든 유형의 2D 게임에서 사용됩니다. 예를 들어, 메인 캐릭터의 이미지를 스프라이트로 임포트할 수 있습니다.
스프라이트 컬렉션을 사용하여 캐릭터를 빌드할 수도 있습니다. 그러면 캐릭터의 움직임과 애니메이션을 더욱 세밀하게 제어할 수 있습니다.
Unity의 권장 설정을 사용하여 스프라이트를 임포트합니다. 스프라이트 임포트 및 설정을 참조하십시오.
Sprite Renderer 컴포넌트를 사용하여 스프라이트를 렌더링합니다. 예를 들어, 스프라이트 렌더러를 사용하여 스프라이트의 컬러와 불투명도를 변경할 수 있습니다.
Unity Learn의 스프라이트 렌더러 튜토리얼 소개를 참조하십시오. 레이어의 스프라이트를 정리하여 정렬하면 뎁스 착시를 형성할 수 있습니다. 다양한 전략을 활용하여 스프라이트를 정렬할 수 있습니다. 자세한 내용은 스프라이트 정렬을 참조하십시오. 예를 들어 Y 축을 따라 스프라이트를 정렬하여 더 높은 위치의 스프라이트를 더 낮은 위치의 스프라이트보다 뒤에 정렬함으로써 전자가 후자보다 더 멀리 떨어진 것처럼 보이게 할 수 있습니다.
스프라이트의 오버레이 순서를 설정하려면 레이어 정렬을 사용하십시오.
스프라이트 렌더러를 사용하여 게임 오브젝트를 그룹화하고, 게임 오브젝트가 스프라이트를 렌더링하는 순서를 제어하려면 그룹 정렬을 사용하십시오.
스프라이트 아틀라스를 사용하여 여러 개의 텍스처를 하나의 결합된 텍스처로 통합할 수 있습니다. 이를 통해 게임을 최적화하고 메모리를 절약할 수 있습니다. 예를 들어, 특정 캐릭터나 목적과 연결된 스프라이트를 모두 하나의 스프라이트 아틀라스에 추가할 수 있습니다.
Unity Learn의 스프라이트 아틀라스 튜토리얼 소개를 참조하십시오.
World-building refers to the process of building your game’s levels and environments. You can combine the world-building tools in this section in whichever way makes the most sense for your game; for example, you can make a top-down game using only 9-slice, or you can make a side-on platformer with Tilemap and SpriteShape.
9슬라이싱은 여러 개의 에셋을 준비하지 않고도 다양한 크기로 이미지를 재사용할 수 있는 2D 기법입니다. Unity는 스프라이트의 일부를 동적으로 스트레치하고 타일링하여 하나의 스프라이트를 다양한 크기의 UI 요소의 경계나 배경으로 활용할 수 있습니다. 스프라이트 9슬라이싱을 참조하십시오.
예를 들어, 2D 레벨을 빌드할 때 9슬라이싱 기법으로 스프라이트를 셰이프에 맞춰 스트레치할 수 있습니다.
Unity Learn의 확장 가능한 스프라이트에 9슬라이싱 사용하기 튜토리얼을 참조하십시오.
Tilemap 컴포넌트는 2D 레벨 생성을 위해 타일 에셋을 저장하고 처리하는 시스템입니다. 기본으로 설치된 2D 타일맵 에디터 패키지를 사용하여 타일맵을 이용할 수 있습니다.
예를 들어, 타일맵을 사용하여 레벨을 색칠할 수 있습니다. 이를 위해서는 타일과 브러시 툴을 사용하고 타일의 작동을 제어하는 규칙을 정의합니다.
Unity Learn의 타일맵 소개 튜토리얼을 참조하십시오.
프로젝트에 타일맵 에셋을 추가하려면 2D 타일맵 추가 사항 패키지를 설치하십시오. 이 패키지에 포함된 재사용 가능한 2D 및 타일맵 에디터 스크립트를 프로젝트에 활용해보십시오. 스크립트의 동작을 커스터마이즈하여 여러 시나리오에 적합한 새로운 브러시를 만들 수 있습니다.
아이소메트릭 원근이 사용된 게임의 경우, 아이소메트릭 타일맵을 만들 수 있습니다.
스프라이트 셰이프는 벡터 그리기 툴과 비슷하게 유기적 랜드스케이프 및 경로와 같은 대형 스프라이트를 더욱 유연하게 만들 수 있는 방법을 제공합니다. 스프라이트 셰이프 프로필을 참조하십시오.
스프라이트 셰이프를 사용하여 작업하기 튜토리얼을 참조하십시오.
세 가지 방법으로 2D 캐릭터를 애니메이션화할 수 있습니다.
2D 애니메이션 타입 | 용도 |
---|---|
프레임 바이 프레임 | 예술적 이유로 사용됩니다(예: 게임에 클래식 애니메이션 아트 스타일을 적용하려는 경우). 프레임 바이 프레임 애니메이션은 제작 시 및 실행 시 비교적 많은 리소스를 소모합니다. |
컷아웃 | 부드러운 골격 애니메이션. 캐릭터를 사실적으로 묘사할 필요가 없는 경우 사용합니다. |
골격 | 스프라이트가 뼈대 구조대로 구부러지는 부드러운 골격 애니메이션입니다. 보다 유기적인 느낌의 캐릭터를 구현하려는 경우 사용합니다. |
프레임 바이 프레임 애니메이션은 애니메이션의 모든 순간을 개별 이미지로 그린 다음 마치 플립북의 페이지를 넘기듯이 빠른 시퀀스로 재생하는 전통적인 셀 애니메이션 기법에 기반합니다.
프레임 바이 프레임 애니메이션을 만들려면 프레임 바이 프레임 애니메이션 워크플로를 따르십시오.
Unity Learn의 스프라이트 애니메이션 소개 튜토리얼을 참조하십시오.
컷아웃 애니메이션에서는 여러 개의 스프라이트가 캐릭터의 바디를 구성하며, 각 피스가 움직여서 전체 캐릭터가 움직이는 시각적 효과를 냅니다. 이 애니메이션 스타일은 스프라이트가 구부러지지 않는다는 점을 제외하면 골격 애니메이션(아래 참조)과 비슷합니다.
골격 애니메이션에서는 스프라이트나 스프라이트 그룹을 하나의 애니메이션 골격에 매핑합니다. 캐릭터와 오브젝트를 위한 애니메이션 뼈대를 만들고 정의할 수 있으며, 이러한 뼈대는 캐릭터와 오브젝트가 어떻게 구부러지고 움직일지 정의합니다. 이 접근법을 사용하면 뼈대가 구부러져 스프라이트를 변형하게 하여 더 자연스러운 움직임을 구현할 수 있습니다. 골격 애니메이션을 사용하려면 2D 애니메이션 패키지(기본적으로 설치)를 사용해야 합니다.
뼈대 에디터로 작업하는 방법의 안내를 포함한 2D 애니메이션 워크플로는 2D 애니메이션 문서를 참조하십시오.
이 섹션은 유니버설 렌더 파이프라인(URP)을 사용할 때 이용할 수 있는 그래픽스 옵션을 설명합니다.
URP와 2D 렌더러를 함께 사용하는 경우, Light 2D 컴포넌트를 이용하여 최적화된 2D 조명을 스프라이트에 적용할 수 있습니다. 자세한 내용은 Lights 2D 소개를 참조하십시오.
조명을 설정하려면 다음을 수행하십시오.
조명용 스프라이트를 준비합니다. 자세한 내용은 조명용 스프라이트 준비를 참조하십시오.
노멀 맵과 마스크 텍스처를 설정합니다. 2D 광원은 스프라이트와 연결된 마스크 텍스처 및 노멀 맵과 상호작용하여 노멀 매핑과 같은 고급 조명 효과를 만들 수 있습니다. 노멀 맵 및 마스크 텍스처 설정을 참조하십시오.
2D 광원 게임 오브젝트를 만듭니다. 2D Lights 프로퍼티를 참조하십시오.
2D 렌더러 데이터 에셋을 설정합니다. 2D 렌더러 에셋 설정을 참조하십시오.
(선택 사항) 픽셀 아트 게임에 2D 광원 효과를 적용하려면 2D 픽셀 퍼펙트를 참조하십시오.
Unity Learn의 URP 조명 튜토리얼을 참조하십시오.
광원에서 사용할 셰이프와 프로퍼티를 정의하여 광원이 드리우는 그림자를 결정하려면 Shadow Caster 2D 컴포넌트를 참조하십시오. 광원의 Shadow Intensity를 0 이상으로 올리십시오.
선택 툴인 파티클 시스템과 포스트 프로세싱을 사용하여 게임 외형의 완성도를 높일 수 있습니다.
스프라이트 대신 파티클 시스템을 사용하여 불, 연기나 액체와 같은 동적 오브젝트를 만들 수 있습니다. 스프라이트는 물리적 오브젝트에 더 적합합니다. 파티클 시스템을 참조하십시오.
포스트 프로세싱 효과와 전체 화면 효과를 사용하여 게임의 형상을 상당 부분 개선할 수 있습니다. 예를 들어, 이러한 효과를 이용하여 물리적 카메라나 영화의 프로퍼티를 시뮬레이션할 수 있으며, 스타일화된 시각 요소도 만들 수 있습니다.
URP는 자체적인 포스트 프로세싱 구현이 있습니다. 유니버설 렌더 파이프라인의 포스트 프로세싱을 참조하십시오.
물리 2D 설정은 2D 게임의 물리적 시뮬레이션 정확도에 대한 제한을 정의합니다. 2D 물리를 참조하십시오.
이 동영상은 Unity 2020.1의 2D 물리 기능을 개략적으로 소개합니다.
Unity의 2D 물리 엔진을 사용하는 방법은 Unity Learn의 2D 물리 튜토리얼을 참조하십시오.
다음은 2D 게임에 유용한 2D 물리 툴입니다.
Rigidbody 2D 컴포넌트는 게임오브젝트를 물리 엔진의 통제하에 둡니다. Rigidbody 2D를 참조하십시오.
Collider 2D 컴포넌트는 물리적 충돌을 위해 2D 게임 오브젝트의 모양을 정의합니다. Collider 2D 컴포넌트는 입력 감지용으로도 사용할 수 있습니다. 예를 들어, 모바일 게임에서 Collider 2D 컴포넌트를 사용하여 스프라이트를 선택 가능하게 할 수 있습니다.
Rigidbody 2D와 함께 사용할 수 있는 Collider 2D 타입은 다음과 같습니다.
Collider 2D의 Is Trigger 프로퍼티를 활성화하여 트리거로 설정하면 더 이상 물리적 오브젝트로 작동하지 않으며, 충돌을 일으키는 일 없이 다른 콜라이더와 교차할 수 있습니다. 대신 콜라이더가 공간에 진입하면 Unity가 트리거 게임 오브젝트의 스크립트에 OnTriggerEnter
함수를 호출합니다.
조인트는 여러 게임 오브젝트를 연결하는 역할을 합니다. Rigidbody 2D 컴포넌트가 연결된 게임 오브젝트나 월드 공간의 고정된 포지션에만 2D 조인트를 연결할 수 있습니다. 2D 조인트를 참조하십시오.
GameObject 콜라이더가 서로와 접촉할 때 Collider 2D(Collider 2D) 컴포넌트와 함께 Effector 2D 컴포넌트를 사용하여 씬의 물리적인 힘을 지정합니다. 2D 이펙터를 참조하십시오.
Unity에서 게임에 배경 음악과 음향 효과를 추가할 수 있습니다. 오디오 개요를 참조하십시오. 타사 소프트웨어를 사용하여 오디오를 만든 다음, 권장 설정의 Unity로 임포트하면 됩니다.
게임에 메뉴나 도움말을 추가하려면 사용자 인터페이스를 설정해야 합니다. 사용자 인터페이스를 설정하려면 Unity UI를 사용하십시오.
프로파일링을 통해 게임의 여러 부분이 리소스를 얼마나 소모하는지 확인할 수 있습니다. 항상 타겟 출시 플랫폼에서 게임을 프로파일링해야 합니다. 애플리케이션 프로파일링을 참조하십시오.
프로파일링 결과를 사용하여 성능을 개선하고 최적화할 수 있습니다. Unity 최적화에 대한 이해를 참조하십시오.
Unity 테스트 프레임워크로 게임과 코드를 테스트하십시오. Unity 테스트 프레임워크를 참조하십시오.
게임을 완성했다면 이제 퍼블리싱하면 됩니다. 빌드 퍼블리싱을 참조하십시오.