Version: 2022.2
언어: 한국어
3D 게임 개발 퀵스타트 가이드
고급 베스트 프랙티스 가이드

3D 게임 만들기

3D 게임을 만들려면 Unity 프로젝트를 설정한 다음 관련 개념을 다음 순서대로 숙지하십시오.

기초

게임 오브젝트는 캐릭터, 프랍, 풍경 등을 나타내는 Unity의 기본 오브젝트입니다. 게임의 모든 오브젝트는 게임 오브젝트에 해당합니다.

게임 오브젝트는 이라는 3D 환경에 있습니다. 씬은 게임 레벨이기도 하지만, 메뉴, 게임 끝부분의 크레딧 또는 완전히 다른 요소일 수도 있습니다.

게임 오브젝트의 동작은 컴포넌트라는 기능 블록에 의해 정의됩니다. 게임 오브젝트에 여러 개의 컴포넌트를 연결할 수 있습니다. 다음 컴포넌트는 3D 게임의 기본 요소입니다.

  • Transform: Transform 컴포넌트는 씬 속 각 게임 오브젝트의 포지션, 회전과 스케일을 결정합니다. 모든 게임 오브젝트에는 Transform 컴포넌트가 있습니다.
  • Mesh Filter: 이 컴포넌트는 3D 게임 오브젝트의 모양을 결정합니다.
  • Mesh Renderer: 이 컴포넌트는 3D 셰이프가 메시 필터의 외형에 의해 정의되는 방식을 정의합니다.
  • Cameras: 월드를 캡처하여 플레이어에게 표시하는 특수 설정된 게임 오브젝트입니다.
  • Rigidbody: 리지드바디는 게임 오브젝트가 중력과 충돌을 비롯한 물리 시스템과 상호작용할 수 있게 합니다. 이 가이드의 물리 섹션을 참조하십시오.
  • Colliders: 이 컴포넌트는 물리적 충돌을 위해 3D 게임 오브젝트의 모양을 정의합니다.

맨 위로 돌아가기

스크립팅

Unity에서는 스크립트를 사용하여 직접 컴포넌트를 만들 수 있습니다. 스크립트를 사용하면 게임 이벤트를 트리거하고, 시간의 경과에 따라 컴포넌트 프로퍼티를 수정하고 사용자의 입력에 응답할 수 있습니다. Unity는 C# 프로그래밍 언어를 기본으로 지원합니다. 다음은 게임에서 스크립트를 사용할 수 있는 방법의 예입니다.

  • 플레이어의 입력을 수신하고, 이러한 입력에 기반하여 게임 오브젝트가 움직이거나 동작하게 합니다.
  • 관련된 승리 또는 패배 씬으로 이어져 온전한 게임 루프를 생성하는 승리 또는 패배 상태를 설정합니다.
  • 다른 변수에 따라 게임 오브젝트의 컴포넌트(예: 변환, 애니메이션 또는 렌더러)에 영향을 줍니다.

Unity에서 스크립트를 사용하는 방법을 알아보려면 스크립팅 개요를 참조하십시오. 스크립팅 기초를 알아보려면 Unity Learn의 스크립팅 기초 교육 과정을 수강하십시오. 보다 심층적인 내용을 알아보려면 코드를 사용하여 만들기크리에이터 키트: 코드 기초 예시 프로젝트를 참조하십시오.

맨 위로 이동

3D 에셋

모델은 오브젝트를 3D로 나타낸 것입니다. 3D 게임을 위한 시각 요소는 대부분 캐릭터, 상호작용 가능한 오브젝트 및 플레이어 주변의 월드와 같은 모델로 구성됩니다.

Probuilder와 같은 툴을 사용하여 Unity에서 모델을 만들 수 있습니다. 단, 이러한 툴은 최종 산출물보다는 프로토타이핑에 더 적합합니다.

최종 산출물에 보다 완성도 높은 3D 에셋을 추가하려면 3D 모델링 소프트웨어에서 3D 모델, 머티리얼과 텍스처를 만들고 Unity로 임포트하십시오.

왼쪽: 플레이어 캐릭터를 위한 3D 폴리곤 메시. 오른쪽: Unity에서 머티리얼과 함께 렌더링된 플레이어 메시
왼쪽: 플레이어 캐릭터를 위한 3D 폴리곤 메시. 오른쪽: Unity에서 머티리얼과 함께 렌더링된 플레이어 메시

3D 모델 파일 임포트

Unity는 .fbx 모델 포맷을 사용합니다. 기타 자주 사용되는 네이티브 모델 포맷(예: .max, .blend, .mb, .ma)을 사용해도 되며, 이러한 모델 포맷이 임포트되면 Unity가 이를 .fbx로 변환합니다.

Unity로 모델을 임포트하여 프로젝트에서 사용하십시오.

메시 렌더링

3D 메시는 3D 모델의 구조적 빌드입니다. 3D 메시는 여러 개의 폴리곤 셰이프로 구성됩니다. 게임 오브젝트에 3D 모델을 추가하려면 게임 오브젝트에 메시 필터를 추가하십시오. Mesh Renderer 컴포넌트는 씬에 메시를 렌더링합니다. 모델이 게임에 나타나게 하려면 Mesh Filder 컴포넌트가 있는 게임 오브젝트에 메시 렌더러를 추가하십시오.

머티리얼(Materials)

머티리얼텍스처, 컬러 틴트와 셰이더와 같은 표면의 시각적 형상 정보를 조합합니다. 머티리얼을 사용하여 표면을 렌더링하는 방법을 정의하십시오.

  • 텍스처는 Unity로 임포트하는 모든 2D 이미지 파일입니다. 텍스처를 사용하여 메시를 래핑하고 모델에 세부 디테일을 추가하십시오.
  • 컬러 틴트를 사용하여 텍스처의 컬러를 변경하십시오.
  • 셰이더는 Unity가 화면에 게임 오브젝트를 어떻게 표시하는지 결정하는 일련의 명령입니다. 셰이더를 사용하여 Unity가 조명 입력과 머티리얼 설정에 기반하여 각 픽셀을 렌더링하는 방식에 영향을 줄 수 있습니다.

Unity Learn의 [머티리얼 디자인]에 대한 튜토리얼(https://learn.unity.com/tutorial/shading-material-design)을 참조하십시오.

맨 위로 돌아가기

게임 내 환경 빌드

씬에 모델과 여타 에셋을 추가하여 만든 환경
씬에 모델과 여타 에셋을 추가하여 만든 환경

환경 디자인은 게임플레이가 진행되는 환경을 만드는 과정입니다. Unity 에디터에서 환경을 디자인하는 동시에 빌드할 수도 있고, Unity 외부에서 환경을 디자인한 다음 Unity에서 빌드할 수도 있습니다.

게임 내 환경을 빌드하려면 씬에 게임 오브젝트를 추가하고 선호와 디자인에 맞춰 위치를 지정해야 합니다. Unity 에디터에서는 씬에 모델을 직접 배치할 수 있을 뿐 아니라, 빌트인 터레인 기능을 사용하여 게임에 랜드스케이프를 추가할 수 있습니다. 에디터에서 여러 개의 터레인 타일을 만들고, 랜드스케이프의 높이나 형상을 조정하고, 랜드스케이프에 나무나 풀을 추가할 수 있습니다. 터레인 만들기 및 사용에 대해 자세히 알아보십시오.

맨 위로 돌아가기

애니메이션

다른 프로그램에서 제작한 애니메이션을 임포트하거나, 에디터에서 직접 에셋을 애니메이션화할 수 있습니다. 3D 애니메이션에 대해 자세히 알아보려면 Unity Learn의 3D 애니메이션 시스템 소개 교육 과정을 참조하십시오.

플레이어가 멈춰서 있어서 대기 상태 애니메이션이 재생되는 모습
플레이어가 멈춰서 있어서 대기 상태 애니메이션이 재생되는 모습

애니메이션 임포트

애니메이션이 포함된 모델을 임포트하면, Unity가 애니메이션 클립을 임포트할 수 있습니다. 즉, 다른 프로그램에서 모델을 애니메이션한 다음 Unity에서 클립에 액세스하여 조작할 수 있습니다.

Unity에서 모델 애니메이션화

Unity 내에서 직접 애니메이션 클립을 만들고 수정하려면 Animation 창을 사용하십시오. 씬 내 게임 오브젝트에 간단한 애니메이션(예: 포지션, 크기, 회전 변경 등)을 추가하려면 키프레임 애니메이션을 사용하십시오.

애니메이션 제어

재생할 애니메이션 클립을 제어하려면 Animator 클래스로 스크립트에서 해당 클립을 직접 호출하거나, Animator 창에서 애니메이터 컨트롤러를 만들고 수정하십시오.

Animator 창을 사용하여 다음을 수행할 수 있습니다.

맨 위로 돌아가기

그래픽스

조명(Lighting)

씬에 조명을 추가하여 환경에 뎁스와 분위기를 더하고, 플레이어가 여러분이 만든 게임 월드를 경험할 수 있게 하십시오. 조명을 설정하려면 다음 단계를 따르십시오.

  1. 광원을 만듭니다. 계층 창에서 마우스 오른쪽 버튼을 클릭하여 게임 오브젝트 메뉴를 열고, Light를 선택한 다음, 씬에 추가할 광원 타입을 선택합니다. 광원 타입을 참조하십시오.
  2. 씬에 광원을 배치합니다. 원하는 효과를 얻을 때까지 광원의 컬러, 강도와 배치를 조정합니다. 광원 사용을 참조하십시오.
  3. 조명을 완성합니다. 다른 광원 모드를 선택하거나, 쿠키 마스크를 추가하여 그림자를 만들 수 있습니다.
스포트라이트 광원으로 대기 조명이 구현된 씬
스포트라이트 광원으로 대기 조명이 구현된 씬

Unity Learn의 URP의 조명 튜토리얼을 참조하십시오.

맨 위로 돌아가기

오디오

Unity에서 게임에 배경 음악과 음향 효과를 추가할 수 있습니다. 오디오 개요를 참조하십시오. 타사 소프트웨어를 사용하여 오디오를 만든 다음, 권장 설정의 Unity로 임포트하면 됩니다.

맨 위로 돌아가기

물리

플레이어 캐릭터에 물리 시스템을 사용하여 캐릭터가 벽과 충돌하게 하는 capsule collider 컴포넌트가 있습니다.
플레이어 캐릭터에 물리 시스템을 사용하여 캐릭터가 벽과 충돌하게 하는 capsule collider 컴포넌트가 있습니다.

Unity의 물리 엔진을 사용하여 게임 오브젝트의 상호작용 방식을 제어하십시오. 물리 엔진으로 중력 및 메커니즘과 같은 힘을 리플리케이트할 수 있습니다. 이러한 힘은 현실에서의 충돌 시 게임 오브젝트의 동작을 정의합니다. 물리 설정을 통해 게임 디자인에 알맞은 커스텀 물리를 만들 수도 있습니다. 이러한 커스텀 물리는 현실을 정확하게 시뮬레이션하지 않을 수 있습니다. Unity의 물리 엔진을 사용하는 방법을 알아보려면 Unity Learn의 물리 튜토리얼을 참조하십시오. 자세한 내용은 사용자 매뉴얼의 물리 섹션을 참조하십시오.

게임 오브젝트의 물리를 설정하려면 다음 단계를 따르십시오.

  1. 게임 오브젝트가 물리 시스템의 영향을 받고 중력과 충돌 등의 요소에 응답하게 하려면 Rigidbody 컴포넌트를 추가합니다. 게임 오브젝트가 씬의 다른 게임 오브젝트와 상호작용하도록 하려면 콜라이더를 사용합니다. 예를 들어, 콜라이더가 있는 게임 오브젝트는 이동하거나 콜라이더가 있는 다른 게임 오브젝트에 의해 이동될 수 있습니다.
  2. 두 개의 게임 오브젝트가 교차할 때 코드의 함수를 호출하려면 콜라이더를 추가하고 트리거로 만듭니다.

맨 위로 돌아가기

사용자 인터페이스

게임에 메뉴나 도움말을 추가하려면 사용자 인터페이스를 설정해야 합니다. 사용자 인터페이스를 설정하려면 Unity UI를 사용하십시오.

맨 위로 돌아가기

3D 게임 개발 퀵스타트 가이드
고급 베스트 프랙티스 가이드