핵심강좌! 유니티5: 예제로 배우는 unity 게임 개발 필수 기술 완벽 가이드
Post on 25-Jul-2016
291 views
DESCRIPTION
이재환 지음 | 게임 개발 시리즈_017 | ISBN: 9791158390297 | 40,000원 | 2016년 02월 29일 발행 | 704쪽 | Unity, Unity 5, 게임, 게임 개발, 게임 프로그래밍, 유니티, 유니티 5TRANSCRIPT
책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
목차
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
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
01유니티3D
설치와 설정
02기본 익히기
V
책2.indb 5 2016-02-18 오후 6:37:40
3.1 재질 ................................................................................................................................. 49
재질을 적용하는 방법 ................................................................................................ 49
3.2 Material ......................................................................................................................... 50
재질로 색 지정하기 ..................................................................................................... 54
에셋스토어 사용하기 ................................................................................................... 58
재질로 텍스쳐 지정하기 ........................................................................................... 63
3.3 Physics Material ..................................................................................................... 66
에셋스토어 사용하기 .................................................................................................. 68
재질로 텍스쳐 지정하기 ............................................................................................ 70
컴포넌트(Component) ................................................................................................ 72
물리 적용하기 ................................................................................................................ 73
물리 재질 적용하기 ..................................................................................................... 76
4.1 Move .............................................................................................................................. 86
조명 .................................................................................................................................. 86
도움말 활용하기 .......................................................................................................... 90
스크립트 컴포넌트 생성 ............................................................................................. 92
스크립트 작성 ............................................................................................................... 96
Vector3 ........................................................................................................................... 99
코딩 시 주의사항 ....................................................................................................... 100
유니티의 단위 ............................................................................................................. 101
Congratulation! .......................................................................................................... 101
스크립트 작성 ............................................................................................................. 102
프레임 시간의 보정 .................................................................................................. 105
03재질
04트랜스폼
목차
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
5.1 Move ........................................................................................................................... 153
스크립트 작성 ............................................................................................................. 156
5.2 Rigidbody ................................................................................................................. 158
리지드바디의 질량 .................................................................................................... 164
올바른 크기 사용 ...................................................................................................... 164
05충돌
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
스크립트 작성 ............................................................................................................. 204
6.4 Collision .................................................................................................................... 209
스크립트 작성 ............................................................................................................. 210
태그(Tag) 설정 ............................................................................................................ 211
06캐릭터
컨트롤러
목차
VIII
책2.indb 8 2016-02-18 오후 6:37:41
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
8.1 카메라 시점 ............................................................................................................... 257
8.2 Follow ......................................................................................................................... 259
스크립트 작성 ............................................................................................................. 262
07사운드
08카메라
IX
책2.indb 9 2016-02-18 오후 6:37:41
9.1 Skybox ....................................................................................................................... 272
스크립트 작성 .............................................................................................................. 274
9.2 RendererSet ............................................................................................................ 278
에셋스토어 사용하기 ................................................................................................ 278
스카이박스 머티리얼 만들기 ................................................................................. 280
9.3 CameraSet ............................................................................................................... 287
10.1 카메라 ....................................................................................................................... 292
카메라 투영 방식 ....................................................................................................... 292
2D처럼 만들기 ............................................................................................................ 293
10.2 좌표계 ....................................................................................................................... 294
월드(World) 좌표계 ................................................................................................... 294
스크린(Screen) 좌표계 ............................................................................................ 295
GUI 좌표계 .................................................................................................................. 295
뷰포트(Viewport) 좌표계 ........................................................................................ 296
10.3 Unity GUI ................................................................................................................ 296
유니티의 GUI 시스템 ................................................................................................ 296
스크립트 작성 ............................................................................................................. 298
스크립트 추가 작성 .................................................................................................. 302
스크립트 작성 ............................................................................................................. 304
09스카이박스
10Unity GUI
(Legacy)
목차
X
책2.indb 10 2016-02-18 오후 6:37:41
11.1 Prefab ........................................................................................................................ 308
프리팹의 특징 ............................................................................................................. 310
스크립트 작성 .............................................................................................................. 314
트레일 렌더러(Trail Renderer) ............................................................................... 317
프리팹 만들기 .............................................................................................................. 319
11.2 Instantiate ................................................................................................................ 320
스크립트 작성 ............................................................................................................. 323
스크립트 작성 ............................................................................................................. 325
12.1 Particles ................................................................................................................... 329
파티클 에셋 추가 ....................................................................................................... 333
12.2 Instantiate ............................................................................................................... 338
스크립트 작성 ............................................................................................................. 341
13.1 Raycast .................................................................................................................... 345
스크립트 작성 ............................................................................................................. 346
스크립트 작성 ............................................................................................................. 351
스크립트 작성 ............................................................................................................. 357
스크립트 수정 ............................................................................................................. 361
스크립트 수정 ............................................................................................................. 363
13.2 ScreenPointToRay ............................................................................................. 365
스크립트 작성 ............................................................................................................. 367
스크립트 작성 ............................................................................................................. 370
스크립트 작성 ............................................................................................................. 373
11프리팹
12파티클
13레이캐스트
XI
책2.indb 11 2016-02-18 오후 6:37:42
14.1 Distance ................................................................................................................... 376
스크립트 작성 ............................................................................................................. 377
14.2 Random .................................................................................................................. 381
스크립트 작성 ............................................................................................................. 381
14.3 FindChild ................................................................................................................ 383
스크립트 작성 ............................................................................................................. 384
15.1 기울기 ........................................................................................................................ 388
스크립트 작성 ............................................................................................................. 389
15.2 중력 가속도계 ........................................................................................................ 398
스크립트 수정 ............................................................................................................. 398
16.1 Coroutine ................................................................................................................ 400
16.2 Subroutine ............................................................................................................. 400
스크립트 작성 ............................................................................................................. 402
16.3 Yield .......................................................................................................................... 403
스크립트 작성 ............................................................................................................. 404
16.4 ThreadSleep ......................................................................................................... 406
스크립트 작성 ............................................................................................................. 407
14유용한 API
15중력
가속도계
16코루틴
목차
XII
책2.indb 12 2016-02-18 오후 6:37:42
16.5 AsyncOperation .................................................................................................. 410
스크립트 작성 .............................................................................................................. 411
스크립트 작성 .............................................................................................................. 413
16.6 AnswerCheck ...................................................................................................... 416
스크립트 작성 .............................................................................................................. 417
17.1 LoadLevel ............................................................................................................... 423
첫 번째 씬 만들기 ..................................................................................................... 423
두 번째 씬 만들기 ..................................................................................................... 430
씬 전환 .......................................................................................................................... 432
스크립트 작성 ............................................................................................................. 433
씬 전환 .......................................................................................................................... 437
씬 전환 .......................................................................................................................... 439
실행 ................................................................................................................................ 439
17.2 LifeCycle ................................................................................................................. 440
스크립트 작성 ............................................................................................................. 441
두 번째 씬 작업 ......................................................................................................... 444
씬 전환 .......................................................................................................................... 446
실행 ................................................................................................................................ 447
18.1 메서드 호출 ............................................................................................................. 450
스크립트 작성 ............................................................................................................. 451
스크립트 작성 ............................................................................................................. 452
메서드를 호출하는 세 가지 방법 ......................................................................... 454
17씬 전환
18메서드
호출
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
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
19플레이어프렙스
20Unity UI
목차
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.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 Animation ............................................................................................................... 586
22.2 Legacy Animation ............................................................................................. 587
스크립트 작성 ............................................................................................................. 594
스크립트 작성 ............................................................................................................. 604
21모델링
22애니메이션(1)
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
스크립트 수정 ............................................................................................................. 667
24.1 Joystick ................................................................................................................... 671
조이스틱 추가 ............................................................................................................. 675
스크립트 작성 ............................................................................................................. 680
23애니메이션(2)
24조이스틱
목차
XVI
책2.indb 16 2016-02-18 오후 6:37:43
기본 익히기
02CHAPTER
학습 목표
• 스냅 기능을 익힌다.
• 글로벌 좌표와 로컬 좌표를 이해한다.
• 부모 자식 관계를 이해한다.
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 게임 오브젝트가 있는데
앞으로 예제에서 자주 사용할 게임 오브젝트는 다음과 같다.
다음과 같이 메뉴를 선택해 씬 뷰에 플레인 게임 오브젝트를 추가한다. 플레인(Plane)은 평평한 바닥이다.
메뉴: GameObject → 3D Object → Plane
씬 뷰에 게임 오브젝트를 추가하면 여러분이 보고 있는 방향과 좌표를 기준으로 게임 오브젝트가 추가된
다. 그런데 이 좌표가 정확히 어디인지는 알 수 없다. 이 말은 3D 공간의 어떤 곳에라도 임의로 게임 오브
젝트가 추가될 수 있다는 뜻이다.
플레인(Plane)
큐브(Cube)
스피어(Sphere)
실린더(Cylinder)
캡슐(Capsule)
책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와 정점 스냅으로 연결한 것과 같
은 모습이다.
실습
•Cube (1)의 글로벌 좌표를 확인한다.
•Cube (1)의 로컬 좌표를 확인한다.
책2.indb 43 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를 이동했을 때 자식인 Cube (1)이 같이 이동하는지 확인한다.
•Cube (1)을 이동해 부모인 Cube와 상관없이 Cube (1)이 이동하는지 확인한다.
책2.indb 46 2016-02-18 오후 6:37:51
2장. 기본 익히기 47
Cube 이동
Cube(1) 이동
책2.indb 47 2016-02-18 오후 6:37:51
재질
03CHAPTER
학습 목표
• 재질에 색과 텍스쳐를 적용하는 법을 익힌다.
• 물리 재질을 적용하는 법을 익힌다.
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장. 재질 51
■ 1장에서 정한 규칙대로 프로젝트 뷰에서 기본 디렉터리를 생성한다.
■ 첫 번째 씬을 [01-Material]로 저장한다.
■ 씬의 기즈모 방향을 다음과 같이 설정해 씬 기즈모의 방향과 좌표계의 방향을 맞춘다.
앞으로도 프로젝트를 만들면 기본적으로 이 과정을 진행하면 된다.
책2.indb 51 2016-02-18 오후 6:37:51