유튜브에서 좋은 유니티 관련 튜토리얼을 발견하고 공부해 보려고 합니다.
Jimmy Vegas라는 분의 영상들인데, 여러 장르에 걸쳐 초심자를 위한 튜토리얼을 제공합니다. 튜토리얼 관련 홈페이지도 마련되어 있어서 스크립트와 텍스쳐 등을 다운받을 수도 있습니다. 방문해 보시기 바랍니다.
16세에 DOS 기반의 게임제작에 입문하여 2012년부터 유니티를 사용했고, 무료로 강의를 올리며 개발을 하고 있는 32세의 젊은 개발자라고 합니다.
다만 한가지 문제라고 하면 제가 모르는 언어인 자바스크립트로 스크립팅을 한다는 점인데 C#으로 바꾸어서 따라가 보도록 하겠습니다.
많은 튜토리얼들 중 수퍼 마리오 비슷한 게임을 만드는 강의로 시작해보려 합니다.
(유튜브 플레이 리스트)
동영상 1번
먼저 super mario clone 이라는 이름으로 새 프로젝트를 생성하겠습니다.
Directional Light와 Main Camera 뿐인 빈 프로젝트가 생성되었습니다.
Hierarchy에서 Create>3D Object>Cube를 선택하여 입방체 하나를 씬에 추가하고 이름을 Ground로 정합니다. 이 입방체를 이용해서 바닥타일을 만들 것입니다. Ground를 우클릭 후 Duplicate를 선택해서 하나 더 추가합니다.
현재 두 개의 입방체가 origin 위치에 겹쳐져 있습니다. Edit>Snap Setiings를 선택하여 세팅 창을 띄웁니다.
오브젝트를 한번 snap했을 때 얼마나 움직일지를 결정해 주는 창입니다. Move X, Y, Z가 1이외의 수로 되어 있다면 위의 그림처럼 1로 바꿔서 한번 snap 했을때 어느 쪽으로던 1유닛 만큼만 움직일 수 있도록 합시다.
그리고 씬 창에서 Ctrl 키를 누르고 화살표를 x축으로 한번 당기면 1단위만큼씩 끊어 움직입니다(이것이 Snap입니다).
이제 Hierarchy에서 Main Camera를 선택해 봅시다.
생성된 큐브의 뒤쪽 멀리에 카메라가 보입니다. 핸드 툴을 선택하고 피벗 움직임과 WASD 키 등을 이용해서(동영상 참고 바람) 뷰를 카메라 쪽으로 옮겨 큐브를 바라보게 합니다. 그리고 복제한 큐브를 선택합니다.
그리고 translate 툴(화살표 모양 툴)을 선택하고 z, x 축으로 한번씩 Snap(컨트롤키 누르고 화살표 잡아당기기)이동하여 Ground의 뒤쪽으로 이동시킵시다.
카메라에서 본 뷰인 Game 뷰에서는 이제 하나가 가려져 큐브 하나만 보이게 됩니다.
다시 원래의 Ground 큐브를 선택하고 Ctrl+D를 눌러 복제합시다. 그리고 복제한 큐브를 역시 Snap하여 y축상에서 아래로 한칸 끌어 내립니다.
이제 L 모양으로 세개의 오브젝트가 씬에 배치되었습니다.
동영상 2번
지난 시간에 Ground, Ground(1), Ground(2)의 세 가지 오브젝트를 배치했습니다만 이대로는 씬이 너무 너저분 합니다. Hierarchy에서 Create>Create Empty 를 선택하고 빈 오브젝트를 하나 생성한 뒤 이름을 GroundSection을 합시다. 그리고 이미 만들어진 세 개의 Ground 오브젝트들을 드래그하여 Child로 만들어 줍니다.
다음으로 할 일은 이 큐브에 바닥타일모양 텍스쳐를 입히는 것입니다. Assets에 Textures라는 새 폴더를 만들고, 여기로 가서 텍스쳐를 다운받읍시다. 압축을 풀어보면 모두 다섯개의 이미지 파일이 있습니다. 그 중 Ground001.png라는 파일을 드래그하여 좀 전에 만든 Textures 폴더 내부로 가져다 놓습니다.
폴더에 보면 Textures 외에 _Scenes라는 폴더가 있는데 현재 씬 저장을 위해 제가 임의로 만든 것입니다. 동영상에서는 아직까지 한번도 씬을 저장하라는 말이 없었는데 Level01이라는 이름으로 씬이 저장된 것을 볼 수 있습니다. Jimmy도 영상 제작 중에 한 번 저장했던 모양입니다. 나중에 이와 관련된 얘기가 나오면 다시 이름을 바꾸던지 하겠습니다.
자, 이제 유니티 상에서 Ground001 텍스쳐 파일을 드래그하여 큐브 중 하나에 가져다 놓아 보겠습니다.
끌어놓은 큐브에 텍스쳐가 입혀졌고, 자동으로 Materials라는 폴더가 생성이 되면서 그 안에 Ground001이라는 Material도 역시 생겼습니다.
지금은 텍스텨를 오브젝트에 드래그해서 Material을 생성했습니다만, 반대로 갈 수도 있습니다. Materials 폴더에 Create>Material해서 빈 Material을 생성하고 인스펙터 상에서 텍스쳐를 아래 그림과 같이 연결해 주는 방법인데 두 과정은 모두 같은 것이니 어떤 방법을 사용해도 좋습니다.
생성된 Ground001 Material을 드래그해서 나머지 큐브에도 입혀줍니다.
그런데 Mario의 바닥타일과 방향이 조금 다르네요. 각 큐브의 Rotation Y를 전부 180으로 바꾸겠습니다.
바닥 모양이 이제 원하는 방향으로 바로 잡혔습니다.
이제 세 개의 바닥 큐브를 한꺼번에 선택(Ctrl을 누른채로 선택하면 다수를 선택 가능합니다)하고 Ctrl+D하여 한번에 복제합니다. 그리고 x축으로 Snap하여 옮깁니다.
이 과정을 반복하여 바닥을 좀 더 생성합니다.
오브젝트들이 늘어나고 있습니다. 원칙적으로 이 하나의 씬에 포함되는 오브젝트들의 개수에는 제한이 없습니다만 Jimmy의 경험상 보통의 컴퓨터라면 20,000개까지 별 무리없이 동작하고 아주 고사양의 컴퓨터라면 100,000개까지 무리가 없다고 합니다.
아까 다운받았던 이미지 파일은 모두 5개였습니다. 그 중 하나는 이미 Texture로 만들었는데 이제 앞으로 사용을 위해 나머지 네 개도 끌어다 Textures 폴더에 가져다둡니다.
이제 벽돌을 만들어 보겠습니다. Hierarchy에서 Create>Cube를 선택하여 새 오브젝트를 생성하고 인스펙터 창에서 Transform의 Position을 (0, 0, 0)으로 직접 바꾸던지 톱니를 누르고 Reset을 누르던지 하여 origin에 정위치 시킵니다. 그러면 바닥에 겹쳐져서 큐브가 보이지 않을 것입니다(만약 정확히 겹쳐지지 않는다면 바닥이 정위치에 있지 않는 경우일 겁니다. 바닥타일들이 들어가 있는 GroundSection의 Transform을 확인해 보시기 바랍니다).
이제 Snap Settings를 재조정 하겠습니다. Edit>Snap Settings를 선택하여 창을 띄우고 Move X, Y, Z의 값을 0.5로 변경합니다.
그리고 이 큐브를 Snap으로 위치 조절해서 (3, 3, 0.5)로 조절합니다.
이제 이 벽돌에 입힐 Material을 만들겠습니다. Materials 폴더에 Create>Material하여 새 머터리얼을 생성하고 이름을 BrownBlock001로 짓습니다.
다음으로 Textures 폴더로 이동해서 BrownBlock001 텍스쳐 파일을 드래그해서 방금 생성한 머터리얼의 Albedo옆 네모칸에 연결합니다.
그리고 다시 Materials폴더의 BrownBlock001을 씬에 배치된 큐브로 드래그하면 큐브에 벽돌모양이 입혀집니다.
이제 Hierarchy에서 Cube를 BrownBlock으로 rename해줍니다.
이제 배경그림을 추가합니다. 배경을 만드는 방법은 여러가지가 있을 수 있지만 이것은 초보자 과정이므로 아주 단순하게 적용하도록 하겠습니다.
Hierarchy에서 다시 Create>3D Object>Cube를 선택하여 큐브를 하나 생성하고 Reset해서 위치를 잡습니다. 이 큐브를 크게하여 뒤에 배치해서 배경으로 삼을 것입니다.
Transform의 Scale을 (50, 25, 1)로 하고 Position의 Z는 뒤로 당겨 15정도에 일단 둡니다.
그리고 Textures 폴더의 구름이 그려진 Clouds002 텍스쳐를 드래그해서 배경큐브에 연결합니다. 그런데 또 이미지가 뒤집혔네요. Rotation Y를 180으로 바꿔서 구름의 모양을 바로잡습니다.
게임뷰를 보면 구름이 좀 큰 듯 하므로 좀 더 떨어뜨려서 Transform의 Position Z를 20에 둡니다. 그리고 Hierarchy에서 이름을 CloudBackground로 바꾸겠습니다.
그리고 이 큐브를 Dupliacate해서 좌우와 위에 더 배치해서 총 6개를 만들어 잘 배열해줍니다.
현재의 게임뷰를 보면 아래쪽에 뒷 공간이 조금 보입니다. 카메라의 위치를 잘 보면서 x,y축으로 살짝 조절해서 뒤의 빈 공간이 보이지 않도록 합니다(영상에서는 카메라 Position을 5.9, 4.5, -10 정도로 두었습니다).
이제 게임뷰를 보면 당장이라도 마리오가 뛰어다닐 것 같은 무대가 만들어졌습니다.
이제 이 씬을 Level01이라는 이름으로 저장합니다. 저는 제 나름대로 미리 저장했던 것에서 이름을 Level01로 바꿔서 다시 저장하도록 하겠습니다.
댓글 없음:
댓글 쓰기