유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

이번 시간에는 게임만드는데 정말로 중요한 시간입니다.

바로 게임의 "재미", 그리고 "어떻게 만들 것인가"에 대한 이야기이죠.

그런데 우리의 경우에는 정말 간단합니다.

왜냐하면 게임의 장르가 이미 정해져 있고(슈팅), 기본적인 가이드라인은 제가 제시할것이기 때문이죠.

하지만 자신이 나중에 혼자 혹은 여럿이서 게임을 만들겠다고 한다면 꼭 필요한 부분입니다.

지금 우리의 경우에는 딱히 주제(스토리)가 분명하지 않아도 됩니다.

그냥 "단순한 비행기 슈팅게임"이기때문이죠.

그런데 사실 "게임의 주제"를 결정하는 것은 "스토리 있는 게임"에서는 매우 중요한 요소입니다.

어떤 스토리냐에 따라서 즐기는 사람들이 달라지고(고객층) 게임 개발 방향이 달라지기 때문이죠.

(왼쪽 위 : 하프라이프, 왼쪽 아래 : 소마, 오른쪽 위 : 콜오브듀티4, 오른쪽 아래 : 용과같이 제로)

그렇게 스토리가 짜여졌다면 장르를 선택하게 됩니다.

위의 블로그에서 대다수의 대표적인 게임장르에 대해서 알 수 있습니다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

Find more statistics at Statista

위의 이미지는 미국내의 비디오 게임 장르를 분석해놓은 자료입니다.

(물론 미국내에서 한정이고 2015년도 자료이고 "비디오 게임" 입니다.)

먼저 장르를 선택할때 중요한 요소는 "스토리"와 "장르"가 어울려야 한다는 것입니다.

(게임 스토리는 현대전쟁인데 장르가 육성시뮬레이트면 조금 이상하겠죠?)

(그런데 가끔 이런 병맛 장르가 엄청난 히트를 칠때가 있습니다.)

그리고 어느정도는 "대세 장르"를 따라가야 한다는 것이죠.

우리의 경우에는 다음과 같이 되겠지요.

 게임의 주제

 간단한 비행기 슈팅게임

 스토리

 내 앞길을 막는 모든 적을 부순다

 장르

 탑뷰, 2D, 슈팅게임(탄막형)

게임에 넣을 요소를 구상하여야 합니다.

게임에 액션요소가 있느냐 없느냐 부터 시작해서 엔딩의 요소들까지 전부 크게 구상합니다.

(자세하게 하면 좋으나 그러기 힘들다면 자세하지 않아도 상관 없습니다.)

그리고 애매모호한 요소들은 모호하게 설정만 해두고 만들면서 수정합니다.

우리는 간단한 슈팅게임(탄막)을 만들기 때문에 간단합니다.

 액션요소

 탄을 이용해서 적을 부순다.

 형식

 2D

 엔딩 조건

 스테이지 클리어시, 적에게 죽었을 시

 추가적 요소

 - 미사일의 종류

 - 보스의 종류(일반 적의 종류)

 - 스테이지 구성

물론 여기서 전부 결정할 필요는 없습니다.

"큰 틀"을 정하면 됩니다.

이제 "큰 틀"을 정했으니 저 틀에 맞추기 위해서 미리 기능들을 구현해봅니다.

그리고 그 기능들을 구현했다면 "레벨 디자인"에 들어갑니다.

(레벨 디자인 : 스테이지 구성)

그리고 전체적인 UI를 다듬고 버그를 잡기시작하죠.

이제 다음시간부터 진짜 만들기 시작할겁니다.

위 처럼 미리 자신만의 "큰 틀"을 만들어 보시고 제가 만드는 대로 그대로 만들지 마시고 자신만의 요소들을 조금씩 가미하여 변형해서 만들어 보시길 바랍니다.

# 닷지 플레이어 제작 1

#1 씬 구성하기

먼저 프로젝트를 생성하고 플레이어가 움직일 공간을 만들어 줄 거다. 제작할 씬은 정사각형의 공간에 사방이 벽으로 막혀있고, 플레이어가 그 안에서 자유롭게 움직일 수 있어야 한다. 우선 유니티 허브를 실행하고 아래와 같이 새로운 프로젝트를 만들어준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

그다음 레벨의 바닥과 벽을 만들어 줄 거다. 하이어리키 창에서 Create -> 3D Object -> Plane을 클릭해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

그다음 가로와 세로의 길이를 늘려줘야 한다. 인스펙터 창에서 게임 오브젝트의 트랜스폼 컴포넌트의 스케일을 (2, 1, 2)로 변경해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

유니티에서 게임 오브젝트의 컬러는 머티리얼이 결정한다. 머티리얼은 셰이더와 텍스처가 합쳐진 에셋으로, 오브젝트의 픽셀 컬러를 결정한다. 프로젝트 창에서 Create -> Material 클릭하여 머티리얼을 생성해주고 이름을 Plane Color로 변경해준다. 그리고 클릭하면 아래와 같이 인스펙터 창에서 Albedo를 클릭하여 색을 검은색으로 변경해준다. 

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

그다음 생성된 머티리얼을 Plane게임 오브젝트로 드래그하면 씬 창에서의 Plane 게임 오브젝트가 검은색이 되는 것을 확인할 수 있다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

그다음 게임 도중 플레이어가 바닥을 벗어날 수 없도록 Plane 게임 오브젝트 사방에 벽을 추가해 줄 거다. 하이어리키 창에서 Create -> 3D Object -> Cube를 클릭한 뒤, 생성된 Cube 게임 오브젝트의 이름을 Wall로 변경해준다. Wall의 위치는 (0, 0.5, 10) 스케일은 (20, 1, 1)로 변경해 준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

다 만들게 되면 위와 같이 벽이 하나 생긴 것을 확인할 수 있다. 뒤쪽에도 벽을 만들어주기 위해 하이어리키 창에서 Wall 게임 오브젝트를 선택한 뒤 Ctrl +D로 복제해주고 복제한 위치를 (0, 0.5, -10)으로 변경해준다. 그리고 나머지 양쪽에도 벽을 설치해 주기 위해 위와 같은 방법으로 복제를 두 번 해준다. 그 뒤 복제한 위치를 (10, 0.5, 0) 그리고 (-10, 0.5, 0), 스케일을 (1, 1, 20)으로 변경해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

위와 같이 사방에 벽을 설치해주면 완성이다. 여기까지 완성하면 표시되는 게임 오브젝트가 많아져 하이어라키 창이 복잡해 보인다. 그래서 레벨을 구성하는 게임 오브젝트들을 하나의 게임 오브젝트 아래에 모아서 정리해준다. 하이어라키 창에서 빈 게임 오브젝트를 생성해주고, 생성된 게임 오브젝트의 이름을 Level로 변경해준 뒤, Level 게임 오브젝트의 위치를 리셋시켜준다. 그다음 하이어라키 창에서 Plane부터 Wall(3)까지 모두 선택하여 Level 게임 오브젝트로 드래그해준다. 

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

위와 같이 바닥과 벽 게임 오브젝트들이 Level 게임 오브젝트의 자식이 된 것을 확인할 수 있다.

#2 카메라 설정하기

게임창에서 레벨 전체가 한눈에 보이도록 카메라를 배치한 뒤, 배경색을 짙은 회색으로 바꾸어 줄 거다. 현재 아래와 같은 게임창에서는 레벨이 한눈에 보이지 않는다. 이를 한눈에 내려다볼 수 있도록 옮겨줄 거다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

하이어라키 창에서 Main Camera 게임 오브젝트를 선택한 뒤, 메인 카메라의 위치를 (0, 15, -10)으로 변경해주고, 회전을 (60, 0, 0)으로 변경해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

위와 같이 설정해주면 아래와 같이 게임 화면이 전체적으로 보이게 된다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

카메라 컴포넌트는 기본값으로 배경을 가상의 하늘인 스카이박스로 채우도록 설정되어있지만 닷지 게임에서는 스카이박스가 어색하기 때문에 단색으로 배경을 변경해준다. Main Camera 게임 오브젝트의 Camera 컴포넌트에서 Clear Flags의 값을 Solid Color로 변경해주고, Background의 컬러 필드를 클릭하여 컬러 창에서 RGB 값을 (36, 36, 36)으로 변경하기. 다시 게임창을 확인하면 아래와 같이 배경이 짙은 회색으로 변경되어 있는 것을 확인할 수 있다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

#3 플레이어 제작

이제 스크립트를 사용해서 조작할 수 있는 플레이어 게임 오브젝트를 만들어준다. 플레이어 게임 오브젝트는 다음과 같은 기능을 가진다. 파란색 캡슐 모양이고, 상화좌우 혹은 WASD 키로 움직일 수 있고, 탄알에 맞으면 죽는다. 먼저 하이어라키 창에서 Create -> 3D Object -> Capsule을 만들어준다. 그 뒤, 캡슐 게임 오브젝트의 이름을 Player로 변경해준 뒤, 위치를 (0, 1, 0)으로 변경해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi
유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

다음은 프로젝트 창에서 Create -> Material을 클릭하여 머티리얼의 이름을 Play Color로 변경해준다. 그 뒤 Albedo 컬러를 (0, 100, 164)로 변경해준다. 그러면 아래와 같이 파란색 캡슐 형태의 Player 게임 오브젝트가 만들어졌다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

나중에 탄알을 만들 때 탄알 입장에서 충돌한 게임 오브젝트가 플레이어 인지 확인할 방법이 필요하기에 게임 오브젝트의 태그를 사용해준다. 태그는 게임 오브젝트를 분류하고, 코드에서 게임 오브젝트를 구별하는 데 사용된다. 하이어라키 창에서 Player 게임 오브젝트를 선택한 뒤, 인스펙터 창의 Tag를 클릭해주고 Player 태그로 선택해준다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

위와 같이 태그를 설정하면 나중에 탄알이 Player 게임 오브젝트와 충돌했을 때만 게임오버가 실행되게 할 수 있다. 탄알 입장에서 충돌한 상대방 게임 오브젝트의 태그가 Player인지 체크해주면 되기 때문이다.

Player 게임 오브젝트를 움직이는 데는 물리적인 힘과 속력이 필요하다. 따라서 Player 게임 오브젝트가 물리적인 상호 작용이 가능하도록 리지드바디 컴포넌트를 추가해준다. 이제 Player 게임 오브젝트는 물리 상호작용이 가능하다. Player 게임 오브젝트가 넘어지는 것을 막기 위해 리지드 바디의 제약 옵션을 사용한다. 제약을 사용하면 어떤 축의 위치나 회전이 변경되지 않게 고정할 수 있다.

유니티 탄막 게임 만들기 - yuniti tanmag geim mandeulgi

이제 Player 게임 오브젝트의 높이가 변경되지 않으면 오직 Y축으로만 회전할 수 있다.