Page 1


책2.indb 1

2016-02-18 오후 6:37:39


서문

유니티의 인기를 반영하듯 다양한 유니티 입문서가 출간되고 있다. 대다수 책이 나름 친절한 설명으로 초보자가 유니티에 편하게 적응하게 하고, 빨리 구체적 결과를 만들어 주는 것을 목표로 하고 있다. 그러나 다른 IT 분야와 다르게 유독 유니티 입문서는 실제 게임개발의 과정을 따라가면서 중간중간 유 니티의 기초적인 사용법을 설명해 나가는 구성으로 된 책이 대부분이다. 이렇다 보니 많은 학습자들이 책의 예제를 만들 때는 잘 따라 만들다가도 막상 자기 생각을 게임으로 만들기 위해 프로젝트를 진행하 면 어떤 기능을 어떻게 적용해야 하는지 모르는 경우를 많이 보았다. 전체적인 흐름을 이어가기 위해 개별 기능에 대한 정리를 못 하였기 때문이다. 그래서 대부분 같은 예 제를 여러 번 반복적으로 만들어보면서 스스로 기능에 대한 정리가 끝난 학습자들만 그 기능을 원활하 게 사용하는 것을 보았다. 그렇다고 해서 실제 게임개발 과정을 따라가면서 유니티의 기능과 사용법을 설명하는 방식이 잘못되었 다는 것은 아니다. 이 방법이 학습자에게 조금이라도 더 흥미를 주고, 단조롭지 않은 학습 방법이고 이 를 선호하는 학습자도 많다. 하지만 이런 학습 방법이 안 맞는 사람도 있다. 이 책은 그런 사람들을 위해 쓰여진 것이다. 그렇다고 해 서 매뉴얼이나 API 레퍼런스처럼 백과 사전식 나열식의 학습 방법은 아니다. 이 책은 유니티로 게임을 개발하는 과정에서 꼭 배워야 하는 필수적인 기술요소들에 대해 간단하지만 다양한 여러 핵심예제를 만들어 보면서 기능에 대한 이해를 높일 수 있도록 구성하였다. 이렇게 기술요 소별 이해를 목표로 만들어진 예제는 나중에는 레고 블록처럼 자기만의 게임을 만들 때 부품처럼 사용 할 수 있을 것이다. 이 책의 내용이 유니티 활용과 게임 개발에 작은 도움이 될 수 있기를 희망한다. 이 책에서 사용하는 예제 소스는 위키북 홈페이지에서 내려받을 수 있다. www.wikibook.co.kr

IV

책2.indb 4

2016-02-18 오후 6:37:40


목차

01 유니티3D 설치와 설정

1.1 유니티3D 설치 ................................................................................................................ 2 내려받기 ............................................................................................................................. 2 설치 ..................................................................................................................................... 4 실행 ...................................................................................................................................... 8 1.2 첫 프로젝트 ................................................................................................................... 11 프로젝트 생성 ................................................................................................................ 12 화면 구성 ......................................................................................................................... 15 1.3 우리들만의 규칙 .......................................................................................................... 16 프로젝트 뷰 폴더 구분 ............................................................................................... 17 1.4 기본 조작 ....................................................................................................................... 19 게임 오브젝트 추가 ...................................................................................................... 19 트랜스폼 툴 ..................................................................................................................... 21 기즈모 ............................................................................................................................... 21 씬 뷰의 화면 이동/회전/줌 ........................................................................................ 24 저장 ................................................................................................................................... 26 1.5 기본 용어 ....................................................................................................................... 28

02 기본 익히기

2.1 Snap ............................................................................................................................... 33 스냅 설정 .......................................................................................................................... 33 정점 스냅(Vertex Snap) ............................................................................................. 34 표면 스냅(Surface Snap) ........................................................................................... 35 2.2 Global vs. Local ....................................................................................................... 41 글로벌 좌표 ..................................................................................................................... 42 로컬 좌표 ......................................................................................................................... 42 2.3 Parent vs. Child ........................................................................................................ 44

V

책2.indb 5

2016-02-18 오후 6:37:40


목차

3.1 재질 ................................................................................................................................. 49 재질을 적용하는 방법 ................................................................................................. 49 3.2 Material .......................................................................................................................... 50

03 재질

재질로 색 지정하기 ...................................................................................................... 54 에셋스토어 사용하기 ................................................................................................... 58 재질로 텍스쳐 지정하기 ............................................................................................ 63 3.3 Physics Material

..................................................................................................... 66

에셋스토어 사용하기 .................................................................................................. 68 재질로 텍스쳐 지정하기 ............................................................................................. 70 컴포넌트(Component) ................................................................................................. 72 물리 적용하기 ................................................................................................................ 73 물리 재질 적용하기 ...................................................................................................... 76

4.1 Move ............................................................................................................................... 86 조명 ................................................................................................................................... 86 도움말 활용하기 ........................................................................................................... 90 스크립트 컴포넌트 생성 .............................................................................................. 92

04 트랜스폼

스크립트 작성 ............................................................................................................... 96 Vector3 ............................................................................................................................ 99 코딩 시 주의사항 ........................................................................................................ 100 유니티의 단위 ............................................................................................................. 101 Congratulation! ........................................................................................................... 101 스크립트 작성 ............................................................................................................. 102 프레임 시간의 보정 ................................................................................................... 105

VI

책2.indb 6

2016-02-18 오후 6:37:41


4.2 Rotate ......................................................................................................................... 107 스크립트 작성 ............................................................................................................. 108 스크립트 작성 .............................................................................................................. 113 4.3 Identity ....................................................................................................................... 115 스크립트 작성 .............................................................................................................. 117 4.4 Throw ......................................................................................................................... 125 스크립트 작성 ............................................................................................................. 126 FixedUpdate ................................................................................................................. 127 GetComponent< >

................................................................................................... 128

스크립트 작성 ............................................................................................................. 132 4.5 Jump ........................................................................................................................... 133 스크립트 작성 ............................................................................................................. 135 스크립트 작성 ............................................................................................................. 138 스크립트 작성 ............................................................................................................. 140 4.6 LookAt ........................................................................................................................ 143 스크립트 작성 ............................................................................................................. 145 4.7 RotateAround .......................................................................................................... 148 스크립트 작성 ............................................................................................................. 149

05 충돌

5.1 Move ............................................................................................................................ 153 스크립트 작성 ............................................................................................................. 156 5.2 Rigidbody .................................................................................................................. 158 리지드바디의 질량 ..................................................................................................... 164 올바른 크기 사용 ....................................................................................................... 164

VII

책2.indb 7

2016-02-18 오후 6:37:41


목차

5.3 Collision ..................................................................................................................... 164 스크립트 작성 ............................................................................................................. 165 콘솔(Console) ............................................................................................................. 168 5.4 Trigger ....................................................................................................................... 173 스크립트 작성 .............................................................................................................. 174 트리거 설정 ................................................................................................................... 175 5.5 Kinematic .................................................................................................................. 183 키네마틱 설정 ............................................................................................................. 184 스크립트 작성 ............................................................................................................. 187 스크립트 적용 .............................................................................................................. 187 키네마틱 설정 ............................................................................................................. 188

6.1 Character Controller ............................................................................................. 192 6.2 Jump ........................................................................................................................... 193 스크립트 작성 ............................................................................................................. 197 6.3 Move ...................................................................................................................... 200

06 캐릭터 컨트롤러

스크립트 작성 ............................................................................................................. 204 6.4 Collision ..................................................................................................................... 209 스크립트 작성 ............................................................................................................. 210 태그(Tag) 설정 ............................................................................................................. 211

VIII

책2.indb 8

2016-02-18 오후 6:37:41


07 사운드

7.1 사운드

........................................................................................................................ 222

지원 포맷 ...................................................................................................................... 222 7.2 Play .............................................................................................................................. 223 사운드 적용하기 ......................................................................................................... 227 스크립트 작성 ............................................................................................................. 231 7.3 PlayOneShot ............................................................................................................ 233 스크립트 작성 ............................................................................................................. 234 7.4 WhenDestroy ........................................................................................................... 235 스크립트 작성 ............................................................................................................. 236 7.5 DestroyDelayed ..................................................................................................... 238 스크립트 작성 ............................................................................................................. 239 7.6 AudioManager ........................................................................................................ 241 스크립트 작성 ............................................................................................................. 242 7.7 Check3DSound ...................................................................................................... 246 스크립트 작성 ............................................................................................................. 246 7.8 PlayClipAtPoint ....................................................................................................... 251 스크립트 작성 ............................................................................................................. 252

08 카메라

8.1 카메라 시점 ................................................................................................................ 257 8.2 Follow .......................................................................................................................... 259 스크립트 작성 ............................................................................................................. 262

IX

책2.indb 9

2016-02-18 오후 6:37:41


목차

9.1 Skybox ....................................................................................................................... 272 스크립트 작성 .............................................................................................................. 274 9.2 RendererSet ............................................................................................................ 278

09 스카이박스

에셋스토어 사용하기 ................................................................................................ 278 스카이박스 머티리얼 만들기 .................................................................................. 280 9.3 CameraSet ............................................................................................................... 287

10.1 카메라 ........................................................................................................................ 292 카메라 투영 방식 ....................................................................................................... 292 2D처럼 만들기 ............................................................................................................ 293 10.2 좌표계 ....................................................................................................................... 294

10 Unity GUI (Legacy)

월드(World) 좌표계 ................................................................................................... 294 스크린(Screen) 좌표계 ............................................................................................ 295 GUI 좌표계 ................................................................................................................... 295 뷰포트(Viewport) 좌표계 ........................................................................................ 296 10.3 Unity GUI ................................................................................................................. 296 유니티의 GUI 시스템 ................................................................................................. 296 스크립트 작성 ............................................................................................................. 298 스크립트 추가 작성 ................................................................................................... 302 스크립트 작성 ............................................................................................................. 304

X

책2.indb 10

2016-02-18 오후 6:37:41


11 프리팹

11.1 Prefab ........................................................................................................................ 308 프리팹의 특징 .............................................................................................................. 310 스크립트 작성 .............................................................................................................. 314 트레일 렌더러(Trail Renderer) ................................................................................ 317 프리팹 만들기 .............................................................................................................. 319 11.2 Instantiate ................................................................................................................ 320 스크립트 작성 ............................................................................................................. 323 스크립트 작성 ............................................................................................................. 325

12 파티클

12.1 Particles .................................................................................................................... 329 파티클 에셋 추가 ....................................................................................................... 333 12.2 Instantiate ............................................................................................................... 338 스크립트 작성 ............................................................................................................. 341

13 레이캐스트

13.1 Raycast ..................................................................................................................... 345 스크립트 작성 ............................................................................................................. 346 스크립트 작성 ............................................................................................................. 351 스크립트 작성 ............................................................................................................. 357 스크립트 수정 ............................................................................................................. 361 스크립트 수정 ............................................................................................................. 363 13.2 ScreenPointToRay .............................................................................................. 365 스크립트 작성 ............................................................................................................. 367 스크립트 작성 ............................................................................................................. 370 스크립트 작성 ............................................................................................................. 373

XI

책2.indb 11

2016-02-18 오후 6:37:42


목차

14.1 Distance ................................................................................................................... 376 스크립트 작성 ............................................................................................................. 377 14.2 Random ................................................................................................................... 381

14 유용한 API

스크립트 작성 ............................................................................................................. 381 14.3 FindChild ................................................................................................................ 383 스크립트 작성 ............................................................................................................. 384

15.1 기울기 ........................................................................................................................ 388 스크립트 작성 ............................................................................................................. 389 15.2 중력 가속도계 ......................................................................................................... 398 스크립트 수정 ............................................................................................................. 398

16.1 Coroutine ................................................................................................................. 400 16.2 Subroutine .............................................................................................................. 400 스크립트 작성 ............................................................................................................. 402

15 중력 가속도계

16 코루틴

16.3 Yield .......................................................................................................................... 403 스크립트 작성 ............................................................................................................. 404 16.4 ThreadSleep .......................................................................................................... 406 스크립트 작성 ............................................................................................................. 407

XII

책2.indb 12

2016-02-18 오후 6:37:42


16.5 AsyncOperation ................................................................................................... 410 스크립트 작성 .............................................................................................................. 411 스크립트 작성 .............................................................................................................. 413 16.6 AnswerCheck ....................................................................................................... 416 스크립트 작성 .............................................................................................................. 417

17 씬 전환

17.1 LoadLevel ................................................................................................................ 423 첫 번째 씬 만들기 ..................................................................................................... 423 두 번째 씬 만들기 ..................................................................................................... 430 씬 전환 .......................................................................................................................... 432 스크립트 작성 ............................................................................................................. 433 씬 전환 .......................................................................................................................... 437 씬 전환 .......................................................................................................................... 439 실행 ................................................................................................................................. 439 17.2 LifeCycle .................................................................................................................. 440 스크립트 작성 ............................................................................................................. 441 두 번째 씬 작업 .......................................................................................................... 444 씬 전환 .......................................................................................................................... 446 실행 ................................................................................................................................. 447

18 메서드 호출

18.1 메서드 호출 .............................................................................................................. 450 스크립트 작성 ............................................................................................................. 451 스크립트 작성 ............................................................................................................. 452 메서드를 호출하는 세 가지 방법 ......................................................................... 454

XIII

책2.indb 13

2016-02-18 오후 6:37:42


목차

19.1 PlayerPrefs ............................................................................................................. 458 Static Functions ......................................................................................................... 458 스크립트 작성 ............................................................................................................. 459

20.1 UI ................................................................................................................................ 464 20.2 Rect Transform ................................................................................................... 464 UI 렉트 툴 조작 .......................................................................................................... 468

19 플레이어프렙스

20 Unity UI

UI Rect Transform ..................................................................................................... 470 피봇 포인트 ................................................................................................................... 471 앵커 포인트 .................................................................................................................. 472 20.3 Text ........................................................................................................................... 475 스크립트 작성 ............................................................................................................. 479 20.4 Button ...................................................................................................................... 482 스크립트 작성 ............................................................................................................. 483 20.5 Toggle ...................................................................................................................... 487 스크립트 작성 ............................................................................................................. 488 토글 설정 ...................................................................................................................... 493 스크립트 작성 ............................................................................................................. 495 20.6 Slider ........................................................................................................................ 499 슬라이더(Slider)의 구조 ........................................................................................... 500 슬라이더 작업 ............................................................................................................. 504 스크립트 작성 ............................................................................................................. 504 스크립트 작성 ............................................................................................................. 507 20.7 Input .......................................................................................................................... 510 스크립트 작성 .............................................................................................................. 515

XIV

책2.indb 14

2016-02-18 오후 6:37:42


20.8 ScrollRect ............................................................................................................... 519 20.9 Mask ........................................................................................................................ 530 20.10 ScrollBar ............................................................................................................... 533 스크립트 작성 ............................................................................................................. 535 20.11 ScrollView ............................................................................................................. 539

21 모델링

21.1 Unity & Model ....................................................................................................... 549 21.2 Model Use ............................................................................................................... 550 모델에 머티리얼 적용하기 ...................................................................................... 556 21.3 Material Change .................................................................................................. 559 스크립트 작성 ............................................................................................................. 560 스크립트 작성 ............................................................................................................. 563 21.4 Dynamic Change ................................................................................................ 566 스크립트 작성 ............................................................................................................. 569 21.5 ResourcesLoad .................................................................................................... 576 리소스 폴더 ................................................................................................................. 577 스크립트 작성 ............................................................................................................. 578

22 애니메이션(1)

22.1 Animation ................................................................................................................ 586 22.2 Legacy Animation .............................................................................................. 587 스크립트 작성 ............................................................................................................. 594 스크립트 작성 ............................................................................................................. 604

XV

책2.indb 15

2016-02-18 오후 6:37:42


목차

22.3 Mecanim Animation .......................................................................................... 608 스크립트 작성 ............................................................................................................. 622 스크립트 작성 ............................................................................................................. 639

23.1 TitleScreen ............................................................................................................. 643 스크립트 작성 ............................................................................................................. 645 23.2 Keyframe Animation ......................................................................................... 647 스크립트 작성 ............................................................................................................. 658

23 애니메이션(2)

스크립트 수정 ............................................................................................................. 667

24.1 Joystick .................................................................................................................... 671 조이스틱 추가 .............................................................................................................. 675 스크립트 작성 ............................................................................................................. 680

24 조이스틱

XVI

책2.indb 16

2016-02-18 오후 6:37:43


TER P A CH

02 기본 익히기

2.1 Snap 2.2 Global vs. Local 2.3 Parent vs. Child

학습 목표 • 스냅 기능을 익힌다. • 글로벌 좌표와 로컬 좌표를 이해한다. • 부모 자식 관계를 이해한다.

책2.indb 32

2016-02-18 오후 6:37:48


2장. 기본 익히기

33

2.1 Snap 스냅(Snap) 기능은 객체를 화면에 배치할 때 미리 지정한 단위별로 이동 거리, 회전각, 비율을 변하게 해 원하는 위치에 쉽고 빠르게 배치할 수 있게 한다.

스냅 설정 스냅은 [Edit → Snap Settings] 메뉴에서 설정한다.

씬 뷰에 있는 오브젝트의 좌표가 왼쪽과 같았을 때 오브젝트를 선택하고 [Snap All Axes] 버튼을 선택하 면 오브젝트의 좌표가 오른쪽 그림과 같이 Snap settings에서 설정한 단위대로 현재 값에서 가장 가까운 값으로 변하는 모습을 확인할 수 있다.

책2.indb 33

2016-02-18 오후 6:37:48


34

핵심 강좌! 유니티5

노트 0.12에서 0으로 값이 변하는 것이 0.12에서 1로 변하는 것보다 더 가까운 거리이므로 위와 같이 이동한다.

정점 스냅(Vertex Snap) 두 게임 오브젝트의 정점(Vertex)을 맞추는 기능이다. 일반적으로 게임 오브젝트를 클릭해 선택하면 왼쪽 그림과 같이 기즈모가 게임 오브젝트 가운데에 표시된다.

정점 스냅을 이용하기 위해 게임 오브젝트를 선택하고 키 보드의 V 키를 누른 채로 마우스를 게임 오브젝트 위에서 이동하면 기즈모의 가운데에 있던 RGB 색 큐브가 사라지 고 노란색 평면 네모가 생기면서 기즈모가 게임 오브젝트 의 정점에 스냅 된다.

책2.indb 34

2016-02-18 오후 6:37:48


2장. 기본 익히기

35

스냅의 기준이 되는 정점을 선택하고 다른 게임 오브젝트 로 끌고 가면 두 게임 오브젝트의 정점이 서로 스냅 돼 연 결된다. ■■

V 키는 이동이 끝날 때까지 계속 누르고 있어야 한다.

■■

기즈모의 가운데 있는 노란색 네모를 클릭해 이동시킨다.

표면 스냅(Surface Snap) 복잡한 지형에서 지형 위에 오브젝트를 배치할 때 주의하지 않으면 오브젝트가 지형에 파묻히거나 공중에 떠 있게 된다. 이럴 때 표면 스냅 기능을 이용하면 오브젝트를 표면에 정확하게 배치할 수 있다. 우리가 일반적으로 사용하는 표면 스냅은 피봇 아이콘의 상태가 Center일 때다(피봇 아이콘은 트랜스폼 툴 오른쪽에 있다). ■■

표면 스냅을 사용할 때 게임 오브젝트의 바닥이 물체의 표면에 스냅 된다.

■■

표면 스냅을 사용할 때 게임 오브젝트의 중심이 물체의 표면에 스냅 된다.

게임 오브젝트를 선택하고 Shift + Ctrl 키를 누르면 기즈모의 가운데가 큐브 모양에서 노란색 평면 네모 로 바뀌는데, 이 상태로 기즈모 가운데의 네모 부분을 드래그하면 게임 오브젝트가 물체의 표면에 스냅 되 어 미끄러지듯이 이동한다.

노트 이때 바닥이 되는 게임 오브젝트는 콜라이더가 있어야 한다(콜라이더는 뒤에서 배운다).

책2.indb 35

2016-02-18 오후 6:37:49


36

핵심 강좌! 유니티5

실습 프로젝트 1 프로젝트명이 02.BasicEx인 프로젝트를 만든다.

1장에서 정한 규칙대로 프로젝트 뷰에 기본 폴더를 생성한다.

스냅 기능을 실습하기 위해 첫 번째 씬을 01-SnapScene으로 저장한다. 기능 을 다 만든 다음에 씬을 저장해도 되지만, 이렇게 먼저 씬을 저장하고 수시로 저 장하는 방법이 안전하다.

이제 씬의 기즈모 방향을 다음과 같이 설정한다. 1장에 있는 씬 뷰의 화면 이동/회전/줌에서 익힌 조작 방 법으로 씬을 돌리면 된다.

책2.indb 36

2016-02-18 오후 6:37:49


2장. 기본 익히기

37

유니티에서는 왼손 좌표계를 사용하는데, 왼손 좌표계는 게임 오브젝트의 등(뒷면)이 보이는 좌표계다. 즉, 게임 오브젝트가 전진하면 Z축의 값이 커지면서 화면 안쪽으로 전진하는 좌표계다. 이제 기즈모의 방 향과 좌표계의 방향이 맞춰졌다.

[왼손 좌표계]

[오른손 좌표계]

두 좌표계 모두 엄지(X축), 검지(Y축)는 같은 방향인데 중지(Z축)의 방향이 서로 반대쪽을 가리키는 것 에 주의해 구분하면 된다. 왼손의 중지 방향은 나한테는 멀어지는 쪽을 가리키고 있고, 오른손의 중지 방 향은 내 쪽을 향하고 있다. 따라서 Z축의 값이 커질 때, 왼손 좌표계는 게임 오브젝트가 전진하면서 화면 에서 멀어지고 작아지지만, 오른손 좌표계는 게임 오브젝트가 전진하면서 화면에서 가까워지고 커진다. 노트 유니티가 왼손 좌표계를 사용한다는 것이 중요한 게 아니다. 유니티에서는 Z축의 양수의 값이 앞쪽을 가리킨다는 게 중요하다.

책2.indb 37

2016-02-18 오후 6:37:49


38

핵심 강좌! 유니티5

이제 게임 오브젝트들을 화면에 배치해보자. 유니티에서 기본으로 제공하는 3D 게임 오브젝트가 있는데 앞으로 예제에서 자주 사용할 게임 오브젝트는 다음과 같다.

큐브 (Cube)

스피어 (Sphere)

실린더 (Cylinder)

플레인 (Plane)

캡슐 (Capsule)

다음과 같이 메뉴를 선택해 씬 뷰에 플레인 게임 오브젝트를 추가한다. 플레인(Plane)은 평평한 바닥이다. 메뉴: GameObject → 3D Object → Plane

씬 뷰에 게임 오브젝트를 추가하면 여러분이 보고 있는 방향과 좌표를 기준으로 게임 오브젝트가 추가된 다. 그런데 이 좌표가 정확히 어디인지는 알 수 없다. 이 말은 3D 공간의 어떤 곳에라도 임의로 게임 오브 젝트가 추가될 수 있다는 뜻이다.

책2.indb 38

2016-02-18 오후 6:37:49


2장. 기본 익히기

39

그러므로 다음과 같이 기본값으로 설정되게 해보자. 인스펙터 뷰에서 트랜스폼 컴포넌트의 오른쪽에 있는 톱니바퀴 모양의 메뉴를 선택하면 팝업 메뉴가 나오는데, 팝업 메뉴 중에서 [Reset]을 선택한다.

인스펙터 뷰에서 추가된 게임 오브젝트의 트랜스폼 컴포넌트를 살펴보면 좌표, 방향, 크기가 다음과 같이 초기화된 모습을 볼 수 있다.

모든 게임 오브젝트를 추가할 때마다 [Reset] 과정을 거친 다음에 원하는 곳으로 옮기는 게 좋다. 노트 씬 뷰에서 보이는 게임 오브젝트가 우리 눈에는 정상적인 곳에 위치하는 것처럼 보일지라도 실제로는 아닐 수 있다. 3D 공간의 작업을 2D 공간에서 하고 있어서 착시 현상에 따라 많은 오차와 착각이 생길 수 있다. 그러므로 이 [Reset] 과정을 거쳐 정확한 위치를 잡는 게 중요하다.

이번에는 다음과 같이 메뉴를 선택해 씬 뷰에 게임 오브젝트를 추가한다. 메뉴: GameObject → 3D Object → Cube

책2.indb 39

2016-02-18 오후 6:37:50


40

핵심 강좌! 유니티5

추가한 게임 오브젝트의 트랜스폼을 리셋하고 게임 오브젝트의 기즈모를 이용해 위치를 조금 변경한다.

왼쪽으로 드래그 위쪽으로 드래그

다음과 같이 메뉴를 선택해 씬 뷰에 게임 오브젝트를 하나 더 추가한다. 메뉴: GameObject → 3D Object → Cube

하이어라키 뷰에 표시되는 게임 오브젝트의 이름은 변수처럼 사용되므로 중복된 이름은 허용되지 않는다. 그래서 같은 게임 오브젝트를 추가했지만, 다음과 같이 게임 오브젝트의 이름이 서로 중복되지 않는 모습 을 볼 수 있다.

추가한 게임 오브젝트의 트랜스폼을 리셋하고 게임 오브젝트의 기즈모를 이용해 위치를 조금 변경한다.

책2.indb 40

2016-02-18 오후 6:37:50


2장. 기본 익히기

41

실습 •표면

스냅을 이용해 Cube를 Plane의 표면에 스냅시킨다.

•정점

스냅을 이용해 Cube와 Cube (1)을 정점으로 스냅시킨다.

2.2 Global vs. Local 앞서 왼손 좌표계와 오른손 좌표계에 대해 알아봤다. 그런데 유니티로 게임을 만들려면 또 다른 좌표계인 글로벌 좌표계와 로컬 좌표계를 알아야 한다.

책2.indb 41

2016-02-18 오후 6:37:50


42

핵심 강좌! 유니티5

글로벌 좌표 글로벌 좌표는 게임 화면을 기준으로 하는 절대 좌표다. 게임 오브젝트의 방향을 글로벌 좌표로 표시할 때 는 트랜스폼 툴 오른쪽에 있는 토글 버튼을 Global로 설정한다. 게임 오브젝트의 기즈모는 게임 오브젝트 가 바라보는 방향과는 상관없이 씬 기즈모와 같은 방향으로 표시된다.

로컬 좌표 트랜스폼 툴 오른쪽에 있는 토글 버튼을 Local로 설정하면 기즈모는 게임 오브젝트의 로컬 좌표로 표시된 다. 이때 로컬 좌표는 게임 오브젝트를 기준으로 한 좌표다. 따라서 게임 오브젝트가 바라보는 방향이 z축 이 된다. 유니티는 게임 오브젝트의 이동 및 회전에 대해 로컬 좌표를 사용한다.

책2.indb 42

2016-02-18 오후 6:37:50


2장. 기본 익히기

43

실습 프로젝트 2 실습을 위해 02.BasicEx 프로젝트에 두 번째 씬을 추가하고 [02-GlobalLocal]로 저장한다. 메뉴: File → New Scene → [02-GlobalLocal]로 저장

하나의 플레인과 두 개의 큐브를 추가하고 다음과 같이 배치한다.

결과적으로 첫 번째 씬의 Cube (1)을 x축으로 회전시키고 다시 Cube와 정점 스냅으로 연결한 것과 같 은 모습이다. 실습

책2.indb 43

•Cube

(1)의 글로벌 좌표를 확인한다.

•Cube

(1)의 로컬 좌표를 확인한다.

2016-02-18 오후 6:37:50


44

핵심 강좌! 유니티5

2.3 Parent vs. Child 게임 오브젝트 사이에는 부모와 자식이라는 관계가 존재한다. 부모-자식 관계를 설정하면 부모가 움직이 거나 회전할 때 자식도 부모를 따라 같이 움직이거나 회전하게 된다. 예를 들면, 지구 안에 있는 나는 지구의 자식이고 지구는 나의 부모인 관계와 같다. 지구가 태양을 공전하 거나 자전할 때 나도 지구와 같이 회전하고 이동하지만, 지구 안에서 나는 따로 이동하거나 회전할 수 있 다. 또 다른 예로 버스 안에 타고 있는 나는 버스의 자식이고 버스는 나의 부모인 관계다. 버스가 이동할 때 나도 같이 이동하지만, 버스 안에서 나는 별도로 이동하거나 회전할 수 있다.

책2.indb 44

2016-02-18 오후 6:37:50


2장. 기본 익히기

45

이런 관계를 게임으로 옮겨서 생각해보면 다음과 같이 생각할 수 있다. 주인공 캐릭터가 칼을 휘두를 때 칼 은 주인공 캐릭터의 자식이고 주인공 캐릭터는 칼의 부모다. 주인공 캐릭터가 팔을 움직이면 칼은 별도의 동작을 주지 않아도 같이 이동한다.

실습 프로젝트 3 실습을 위해 02.BasicEx 프로젝트에 세 번째 씬을 추가하고 [03-ParentChild]로 저장한다. 두 번째 씬 과 똑같이 만들 것이므로 두 번째 씬을 복사해서 세 번째 씬을 만들어보겠다. 다음 그림과 같이 두 번째 씬이 아니라면 프로젝트 뷰에서 02-GolbalLocal 씬을 더블 클릭해 두 번째 씬 을 연다.

이 상태로 두 번째 씬을 복사해 세 번째 씬을 만들고 [03-ParentChild]로 저장한다. 메뉴: File → Save Scene as… → [03-ParentChild]로 저장

프로젝트 뷰에서 씬이 제대로 만들어졌는지 확인한다.

책2.indb 45

2016-02-18 오후 6:37:50


46

핵심 강좌! 유니티5

다음과 같이 윈도 제목에서 현재 씬이 세 번째 씬인지 확인한다.

Cube (1)을 Cube의 자식으로 만들려면 다음 그림과 같이 Cube (1)을 클릭한 채로 드래그해서 Cube 에 드롭한다.

오른쪽 그림과 같이 하이어라키 뷰에서 계층 구조가 만들어지면 Cube (1)은 Cube의 자식이 된 것이다. 이때 계층 구조와는 상관없이 씬 뷰의 모습은 변함이 없다.

실습 •Cube를 •Cube

책2.indb 46

이동해 Cube를 이동했을 때 자식인 Cube (1)이 같이 이동하는지 확인한다.

(1)을 이동해 부모인 Cube와 상관없이 Cube (1)이 이동하는지 확인한다.

2016-02-18 오후 6:37:51


2장. 기본 익히기

47

Cube 이동

Cube(1) 이동

책2.indb 47

2016-02-18 오후 6:37:51


TER P A CH

03 재질

3.1 재질 3.2 Material 3.3 Physics Material

학습 목표 • 재질에 색과 텍스쳐를 적용하는 법을 익힌다. • 물리 재질을 적용하는 법을 익힌다.

책2.indb 48

2016-02-18 오후 6:37:51


3장. 재질

49

3.1 재질 재질은 모든 3D 프로그램에서 사용하는 공통적인 개념으로 3D 모델의 외형을 설정하기 위한 수단이다. 기본적인 색상 설정부터 이미지 기반의 반사적 표현에 이르기까지 모든 것을 다룬다. 보이는 부분 ■■

사과가 빨갛다. 여기서 빨간색은 사과의 보이는 재질이다.

■■

쇠구슬이 반짝인다. 여기서 반짝인다는 쇠구슬의 보이는 재질이다.

보이지 않는 부분 ■■

고무공이 통통 튄다. 여기서 통통 튀는 것은 부딪혔을 때 나타나는 보이지 않는 재질이다. 이를 유니티에서는 물리 재 질이라고 하며, 3.3절에서 다룬다.

재질을 적용하는 방법 1.메쉬에 색을 칠하는 방법

2.메쉬에 서로 다른 텍스쳐를 적용하는 방법

3.셰이더(Shader) 적용

셰이더란 빛의 정보를 이용해 기본적인 명암을 주는 것 외에 빛의 투과, 빛의 반사 등을 이용해 다양하게 물체를 표현하는 방법을 뜻한다. 메쉬에 색을 칠하는 과정이나 메쉬에 텍스쳐를 적용하는 과정 이후에 추 가로 다음과 같이 다양한 셰이더를 적용함에 따라 같은 텍스쳐 재질이라도 서로 다른 느낌을 줄 수 있다.

책2.indb 49

2016-02-18 오후 6:37:51


50

핵심 강좌! 유니티5

노트 유니티는 기존의 복잡하고 어려운 셰이더 프로그래밍을 모르더라도 이러한 셰이더를 쉽게 사용할 수 있도록 다양한 내장 셰이 더를 제공한다.

3.2 Material 유니티는 재질을 표현하기 위해서 머티리얼(Material)을 사용한다.

실습 프로젝트 1 프로젝트명이 03.MaterialEx인 프로젝트를 만든다.

책2.indb 50

2016-02-18 오후 6:37:51


3장. 재질

■■

1장에서 정한 규칙대로 프로젝트 뷰에서 기본 디렉터리를 생성한다.

■■

첫 번째 씬을 [01-Material]로 저장한다.

■■

씬의 기즈모 방향을 다음과 같이 설정해 씬 기즈모의 방향과 좌표계의 방향을 맞춘다.

51

앞으로도 프로젝트를 만들면 기본적으로 이 과정을 진행하면 된다.

책2.indb 51

2016-02-18 오후 6:37:51


핵심강좌! 유니티5: 예제로 배우는 Unity 게임 개발 필수 기술 완벽 가이드  

이재환 지음 | 게임 개발 시리즈_017 | ISBN: 9791158390297 | 40,000원 | 2016년 02월 29일 발행 | 704쪽 | Unity, Unity 5, 게임, 게임 개발, 게임 프로그래밍, 유니티, 유니티 5

Read more
Read more
Similar to
Popular now
Just for you