초판 1쇄 발행 2013년 10월 25일 지은이 박승제 펴낸이 장성두 펴낸곳 제이펍 출판신고 2009년 11월 10일 제406-2009-000087호 주소 경기도 파주시 문발동 파주출판도시 530 1 뮤즈빌딩 403호 전화 070 8201 9010 / 팩스 02 628



Similar documents
유니 앞부속

언리얼엔진4_내지_ indd

°æÁ¦Àü¸Á-µ¼º¸.PDF

2005CG01.PDF

04_오픈지엘API.key

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 중간착취의 금지 41 - 대판 , 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 , 2002도3883 [남녀고용평등법위

사물인터넷비즈니스빅뱅_내지_11차_ indd

DocsPin_Korean.pages

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

Orcad Capture 9.x

목차 제 1 장 inexio Touch Driver소개 소개 및 주요 기능 제품사양... 4 제 2 장 설치 및 실행 설치 시 주의사항 설치 권고 사양 프로그램 설치 하드웨

CD-RW_Advanced.PDF

인켈(국문)pdf.pdf


INDUS-8.HWP

CONTENTS.HWP

Scene7 Media Portal 사용

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Dialog Box 실행파일을 Web에 포함시키는 방법

untitled

LCD Display

untitled

<C1A4C3A5BFACB1B D3420C1A4BDC5C1FAC8AFC0DAC0C720C6EDB0DFC7D8BCD220B9D720C0CEBDC4B0B3BCB1C0BB20C0A7C7D120B4EBBBF3BAB020C0CEB1C720B1B3C0B020C7C1B7CEB1D7B7A520B0B3B9DF20BAB8B0EDBCAD28C7A5C1F6C0AF292E687770>

슬라이드 1

세계 비지니스 정보

iOS ÇÁ·Î±×·¡¹Ö 1205.PDF

2005 중소기업 컨설팅 산업 백서

10X56_NWG_KOR.indd

제 출 문 중소기업청장 귀하 본 보고서를 중소기업 원부자재 구매패턴 조사를 통한 구매방식 개선 방안 연구 의 최종보고서로 제출합니다 한국산업기술대학교 산학협력단 단 장 최 정 훈 연구책임자 : 이재광 (한국산업기술대학교 부교수) 공동연구자 : 노성호

Interstage5 SOAP서비스 설정 가이드

untitled

PRO1_09E [읽기 전용]


AVN2100Kor_Ç¥Áö110818F

<3036C7E2BCF6C3D6C1BEBABB2E687770>

1 Nov-03 CST MICROWAVE STUDIO Microstrip Parameter sweeping Tutorial Computer Simulation Technology

VZ94-한글매뉴얼

슬라이드 1

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

<BAD2B9FDBAB9C1A620BAB8B0EDBCAD5FC5EBC7D55F FB9DFB0A3BBE7C6F7C7D45F33C2F720B1B3C1A428B1D7B8B22020C3DFC3E2292E687770>

Mentor_PCB설계입문

2011년 10월 초판 c 2011 Sony Corporation. All rights reserved. 서면 허가 없이 전체 또는 일부를 복제하는 것을 금합니다. 기능 및 규격은 통보 없이 변경될 수 있습니다. Sony와 Sony 로고는 Sony의 상표입니다. G L

1부

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

DDX4038BT DDX4038BTM DDX4038 DDX4038M 2010 Kenwood Corporation All Rights Reserved. LVT A (MN)

TRIBON 실무 DRAFT 편 조선전용 CAD에 대한 기초적인 사용 방법 기술 기술지원팀

서피스셰이더프로그램 셰이더개발을쉽게! Thursday, April 12, 12

,,,,,, (41) ( e f f e c t ), ( c u r r e n t ) ( p o t e n t i a l difference),, ( r e s i s t a n c e ) 2,,,,,,,, (41), (42) (42) ( 41) (Ohm s law),

MAX+plus II Getting Started - 무작정따라하기

1

Week3

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

< BACFC7D1B1B3C0B0C1A4C3A5B5BFC7E228B1E2BCFABAB8B0ED D D20C6EDC1FD2035B1B32E687770>

FMX M JPG 15MB 320x240 30fps, 160Kbps 11MB View operation,, seek seek Random Access Average Read Sequential Read 12 FMX () 2

Smart Power Scope Release Informations.pages


Microsoft Word - eClipse_사용자가이드_

XJ-A142_XJ-A147_XJ-A242_XJ-A247_XJ-A252_XJ-A257_XJ-M141_XJ-M146_XJ-M151_XJ-M156_XJ-M241_XJ-M246_XJ-M251_XJ-M256

목차 본 취급설명서의 사용법 본 사용설명서에서는 제품상에 표시된 채널명 및 버튼명, 소프트웨어의 메뉴명 등이 대괄호 ([ ]) 안에 표시됩니 (예: [MASTER] 채널, [ON/ OFF], [File] 메뉴) 시작하시기 전에 특징...3 부속품...4 시작하시기 전에

2 x10 목 차 1. 일반 정보 1. 점검 사항 2. 주의 및 관리 3. 방수 4. 배터리 충전하기 2. 순토 X10 사용 방법 1. 화면과 버튼 (1) 모드 표시 (2) 배터리 용량 표시 (3) 알람 심볼 (4) GPS 수신 표시 2. 메뉴 (1) 기본 메뉴 구조

B _02_M_Ko.indd

untitled

00-1표지

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

I What is Syrup Store? 1. Syrup Store 2. Syrup Store Component 3.

( )부록

연구요약 1. 서론 연구의 목적 본 연구는 청소년 교육정책의 바람직한 방향을 설정하고, 미래지향적인 정책과제와 전략, 그리고 비전을 도출하기 위해 수행되었다. 이를 위해 지 난 15년간의 청소년 교육 환경 및 정책의 변화를 분석하고, 향후 15년간 의 청소년 교육 환경

B _01_M_Korea.indb

jy-i3000.indd

02 C h a p t e r Java

untitled

< B3E22032BAD0B1E220C4DCC5D9C3F7BBEABEF7B5BFC7E2BAD0BCAEBAB8B0EDBCAD28C3D6C1BE292E687770>

untitled

표1

Lab10

초보자를 위한 C++

MaxstAR SDK 2.0 for Unity3D Manual Ver

1

<31302E204D43545F47535FC3D6C1BEBAB8B0EDBCAD2E687770>

歯Lecture2.PDF

경제통상 내지.PS

°æÁ¦Åë»ó³»Áö.PDF

PowerPoint 프레젠테이션

CONTENTS 01 Adobe Photoshop Lightroom을 소개합니다 촬영부터 출력까지 간편한 사진 작업 (Simplify photography from shoot to finish) Adobe Photoshop Lightroom 작업공간(Workspace)

우루과이 내지-1

CL100B_manual_kor_m.0.2.indd

Microsoft Word - Automap3

<5BBFACB1B8BAB8B0EDBCAD30372D DB1E2BEF7B0A1C4A1C6F2B0A1BFACB1B8BAB8B0EDBCAD CC3D6C1BE292E687770>

untitled

단계 소요 시간 요소 교수 활동 형태 자료 1 동기유발 활동 도입 5분 20분 동기유발 목표 제시 활동1 청기, 백기 게임을 시청하고 청기 백기 게임을 해보기 - 학생들을 두 팀으로 나누어 청기, 백기로 정하기 게임을 해본다. 두 가지 상태로 표현할 수 있는 것이 어떤

This page left blank intentionally

DRB1598A

PRO1_04E [읽기 전용]

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>


SchoolNet튜토리얼.PDF

PCServerMgmt7

99-18.hwp

Nikon KeyMission 360. KeyMission 360 ( 1.5) SnapBridge 360/170 ( 1.1). SnapBridge 360/170., SnapBridge 360/170 OS.. KeyMission 360/ SnapBridge 360/170

DE1-SoC Board

Transcription:

초판 1쇄 발행 2013년 10월 25일 지은이 박승제 펴낸이 장성두 펴낸곳 제이펍 출판신고 2009년 11월 10일 제406-2009-000087호 주소 경기도 파주시 문발동 파주출판도시 530 1 뮤즈빌딩 403호 전화 070 8201 9010 / 팩스 02 6280 0405 홈페이지 www.jpub.kr / 이메일 jeipub@gmail.com 편집부 이민숙, 이 슬 / 본문디자인 북아이 / 표지디자인 미디어픽스 용지 에스에이치페이퍼 / 인쇄 해외정판사 / 제본 광우제본 ISBN 978-89-94506-77-7 (93000) 값 35,000원 이 책은 저작권법에 따라 보호를 받는 저작물이므로 무단전재와 무단복제를 금지하며, 이 책 내용의 전부 또는 일부를 이용하려면 반드시 저작권자와 제이펍의 서면 동의를 받아야 합니다. 잘못된 책은 구입하신 서점에서 바꾸어 드립니다. 제이펍은 독자 여러분의 책에 관한 아이디어와 원고 투고를 기다리고 있습니다. 책으로 펴내고자 하는 아이디어나 원고가 있으신 분께서는 책에 대한 간단한 개요와 차례, 구성과 저(역)자 약력 등을 메일로 보내주세요. (보내실 곳: jeipub@gmail.com)

차 례 머리말 ⅷ CHAPTER 01 UNITY 3D의 개요 1 1.1 왜 게임 엔진을 사용하는가? 2 1.2 UNITY 3D 소개 3 1.3 UNITY 3D의 특징 4 CHAPTER 02 컴퓨터 그래픽 13 2.1 컴퓨터 그래픽의 구분 14 2.2 3D 모델의 종류 16 2.3 3D 모델링 방법 17 2.4 서피스 모델의 종류 19 2.5 3D 오브젝트의 구성 요소 21 2.6 Light와 Camera 23 2.7 평면 좌표와 공간 좌표 25 iv 차 례

CHAPTER 03 유니티의 인터페이스 27 3.1 UNITY 3D 설치 28 3.2 유니티의 환경 설정 35 3.3 유니티의 인터페이스 39 3.3.1 새 프로젝트 시작 39 3.3.2 GameObject 설치 41 3.3.3 툴바 42 3.3.4 씬 뷰 43 3.3.5 게임 뷰 50 3.3.6 하이어라키 뷰 52 3.3.7 프로젝트 뷰 52 3.3.8 인스펙터 53 CHAPTER 04 게임 제작의 기초(1) 55 4.1 유니티의 거리 단위(Unit) 56 4.2 컴포넌트와 속성 56 4.3 유니티의 좌표계 59 4.4 유니티의 Vector 62 4.5 Light 63 4.6 Camera 67 4.7 오브젝트에 색깔 넣기 68 4.8 오브젝트에 텍스처 넣기 70 4.9 오브젝트의 낙하 73 4.10 오브젝트의 반사 74 4.11 사운드 연주 76 4.12 충돌의 판정 77 4.13 오브젝트 움직이기 81 4.14 월드 좌표와 로컬 좌표 84 차 례 v

4.15 Key로 이동 및 회전하기 86 4.16 계층적인 오브젝트 89 4.17 사용자 키 정의 94 4.18 탱크 3D 모델 제어하기 104 4.19 유니티의 각도 시스템 109 4.20 프리팹 만들기 112 4.21 Spawn Point 활용 114 4.22 포탄 발사 115 4.23 GameObject.Find/transform.Find 117 4.24 Instantiate-프리팹 복제 118 4.25 충돌의 판정 120 4.26 태그 활용 125 4.27 파티클의 활용 128 4.28 카메라 이동 134 4.29 스카이박스 사용하기 136 4.30 탱크에 콜라이더 추가 138 4.31 적군 벙커 만들기 144 4.32 LookAt-목표물 바라보기 145 4.33 Raycast-목표물 탐색 149 4.34 Debug 출력 153 CHAPTER 05 게임 제작의 기초(2) 155 5.1 가위바위보 게임 156 5.2 Animation 만들기 159 5.3 GUI Text 사용하기 163 5.4 글꼴(Font) 추가 165 5.5 Button 만들기 166 5.6 C#에서 한글 사용하기 168 5.7 Visual Studio 사용하기 170 5.8 유니티의 GUI 174 vi 차 례

5.9 난수 만들기 176 5.10 오브젝트의 이미지 바꾸기 177 5.11 GUI Skin 180 5.12 파티클 사용하기 184 5.13 슈팅 게임 만들기 186 5.14 Jet 화염 Particle 만들기 190 5.15 배경 화면 스크롤 192 5.16 World 좌표와 Screen 좌표 195 5.17 Normal Map 사용하기 199 5.18 Object의 크기 및 색깔 설정 200 5.19 폭파 불꽃 파티클 만들기 205 5.20 미사일 만들기 208 5.21 SendMessage 210 5.22 미사일 연속 발사 211 5.23 yield와 Coroutine 215 5.24 오브젝트 보이기/감추기 216 5.25 운석 만들기 220 5.26 전투기의 충돌 처리 221 5.27 전역 변수와 점수 표시 223 5.28 게임 오버 처리 226 5.29 GUI Skin 사용하기 227 5.30 Rich Text 230 5.31 Cell Animation 232 5.32 1 1 Plane 사용하기 240 5.33 길찾기(Nav Mesh Agent) 243 CHAPTER 06 계란받기 게임 257 6.1 게임의 개요 258 6.2 게임 제작의 학습 목표 259 6.3 게임의 리소스 260 차 례 vii

6.4 게임의 흐름도 261 6.5 3D Object의 기본 설정 262 6.6 Game Object 만들기 264 6.7 스테이지 디자인 273 6.8 Object에 Tag 달기 277 6.9 배경 화면 스크롤 277 6.10 Game Manager 만들기 278 6.11 배경 음악 설정 280 6.12 폭탄의 이동 280 6.13 계란의 이동 283 6.14 바구니의 이동 286 6.15 새(Bird)의 이동 288 6.16 게임 초기화 292 6.17 게임 루프 293 6.18 Score 표시와 Game Over 처리 296 6.19 Esc 키로 게임 중지하기 298 6.20 PC Platform Build 298 6.21 Web Player Build 301 6.22 Android Platform으로 빌드 303 6.23 Android 단말기의 개발 환경 설정 307 CHAPTER 07 Flying Owl 311 7.1 게임의 개요 312 7.2 게임 제작의 학습 목표 313 7.3 게임의 리소스 314 7.4 게임의 흐름도 315 7.5 카메라와 Light 설정 316 7.6 Object 만들기 316 7.7 Object에 Collider 추가 319 7.8 Object에 Tag 달기 320 viii 차 례

7.9 프리팹 만들기 321 7.10 게임 화면 디자인 321 7.11 배경 화면 스크롤 323 7.12 화면을 벗어난 나뭇가지 제거 324 7.13 Gift 스크립트 작성 326 7.14 참새의 이동 328 7.15 득점 및 감점 표시 330 7.16 올빼미의 이동 332 7.17 게임 초기화 334 7.18 게임 루프 335 7.19 올빼미의 점프 335 7.20 올빼미의 좌우 이동 336 7.21 카메라의 이동 338 7.22 Bird와 Gift 만들기 340 7.23 Gift의 개수 제한 342 7.24 충돌의 판정 343 7.25 득점 및 게임 오버 표시 344 7.26 모바일 기기의 중력가속도 센서 346 CHAPTER 08 클레이 사격 349 8.1 게임의 개요 350 8.2 게임 제작의 학습 목표 351 8.3 게임의 리소스 352 8.4 게임의 흐름도 353 8.5 3D Object의 Scale Factor 설정 353 8.6 Object 만들기 355 8.7 엽총 만들기 362 8.8 엽총의 회전 366 8.9 엽총의 애니메이션 만들기 368 차 례 ix

8.10 배경 화면 스크롤 380 8.11 접시의 이동 380 8.12 Oops 표시 382 8.13 참새의 이동 384 8.14 실탄의 이동 388 8.15 게임 루프 389 8.16 게임 초기화 394 8.17 OnGUI 함수 작성 396 CHAPTER 09 Dungeon의 Alien 399 9.1 게임의 개요 400 9.2 게임 제작의 학습 목표 401 9.3 게임의 리소스 402 9.4 게임의 흐름도 403 9.5 3D Object의 Scale Factor 설정 404 9.6 Object 만들기 404 9.7 자동문 만들기 416 9.8 Stage 만들기 427 9.9 Laser 이동 스크립트 437 9.10 FireBall 이동 스크립트 438 9.11 Alien 이동 스크립트 441 9.12 Human 이동 스크립트 444 9.13 GUI 화면 만들기 457 CHAPTER 10 Temple Run 463 10.1 게임의 개요 464 10.2 게임 제작의 학습 목표 465 10.3 다리(Bridge) 만들기 466 10.4 Human 만들기 482 x 차 례

10.5 스테이지 만들기 485 10.6 다리 설치 스크립트 487 10.7 주인공 이동 스크립트 작성 494 10.8 GUI 설정 503 10.9 모바일 기기의 처리 505 10.10 게임의 배경 만들기 506 10.11 Android 플랫폼으로 변환 510 CHAPTER 11 Memory Test 513 11.1 게임의 개요 514 11.2 게임 제작의 학습 목표 515 11.3 게임의 흐름도 516 11.4 게임 리소스 추가 516 11.5 배경 화면 만들기 517 11.6 카드 애니메이션 524 11.7 Map 만들기 533 11.8 Game Manager 537 11.9 카드의 Touch 처리 544 11.10 카드 섞기 547 11.11 게임의 상태 표시 549 11.12 카드 판정 552 11.13 스테이지 클리어 555 11.14 Sound 처리 560 11.15 득점의 표시 563 11.16 기타 기능 추가 567 11.17 게임 타이틀 만들기 571 11.18 Scene의 등록 577 차 례 xi

CHAPTER 12 운석 피하기 581 12.1 게임의 개요 582 12.2 3D 오브젝트 만들기 586 12.3 2D 오브젝트 만들기 612 12.4 우주선 움직이기 616 12.5 배경 화면 스크롤 620 12.6 레이저 발사 626 12.7 우주선의 무적 상태, 전투 모드와 운행 모드 633 12.8 적기의 이동 639 12.9 충돌의 판정과 처리 647 12.10 운석과 기뢰의 이동 651 12.11 운석과 기뢰 만들기 658 12.12 Game Manager의 활용 662 12.13 게임의 Stage 668 12.14 보너스 아이템 만들기 679 12.15 보너스 아이템 처리 683 12.16 적기의 등장 687 12.17 우주선의 충돌 판정과 처리 689 12.18 우주선의 보호막과 미니맵 표시 693 12.19 게임 타이틀 697 12.20 모바일 기기의 버튼 처리 706 찾아보기 714 xii 차 례

머리말 모바일(Mobile) 기기의 성능이 눈부시게 발전하여 이제 휴대폰의 CPU도 쿼드코어(Quad- Core)로 정착되어 가고 있습니다. 모바일 기기는 통신뿐만 아니라 카메라, GPS, 중력가속 도, 터치 센서 등 PC에는 없는 기능을 많이 가지고 있으며, 소형화와 휴대성이라는 강력 한 장점으로 인해 모바일 기기의 시장이 PC 시장을 압도하게 되었습니다. 모바일 기기의 성능이 PC에 근접하거나 오히려 PC를 능가하게 됨에 따라 전 세계 게임 시장의 판도가 급격히 변하고 있습니다. 과거에는 게임=PC라는 등식이 성립하여 고사양 의 게임을 즐기기 위해 PC를 업그레이드하는 것이 일반적이었지만, 이제 게임의 플랫폼 (Platform)이 모바일 환경으로 이동하고 있습니다. 국내의 경우만 봐도 거의 대부분의 게임 개발사들은 게임의 플랫폼을 모바일로 전환하고 있습니다. 모바일 게임은 인터페이스와 조작법이 단순하기 때문에 누구나 쉽게 접할 수 있 어 많은 사용자를 확보할 수 있기 때문입니다. 이것은 개발사의 수익과 관련된 문제이므로 아주 중요한 이슈입니다. 인터페이스와 조작법이 단순한 게임은 누구나 쉽게 접할 수 있는 장점이 있지만, 반면에 게임 자체가 단순하므로 그만큼 쉽게 싫증을 느끼게 됩니다. 따라서 게임의 수명이 짧을 수밖에 없습니다. 이런 이유로 개발사들은 계속해서 새로운 게임을 개발해야 하는 문제에 봉착하게 됩니다. 따라서 개발사들의 요구 사항은 다음의 세 가지로 압축됩니다. 1. 게임의 퀄리티가 높을 것 2. 개발의 생산성이 높을 것 3. 멀티 플랫폼을 지원할 것 UNITY 3D(이하 유니티)는 개발 회사나 게임 개발자가 멀티 플랫폼용 게임 개발을 할 수 머리말 xiii

있게 해주는 혁신적인 2D 및 3D 게임 엔진입니다. 유니티를 이용하면 PC 및 맥(Mac) 기 반에서 PC, 웹, 모바일 기기뿐만 아니라 XBox, PS3, 닌텐도 등과 같은 전용 게임기에서 실행되는 게임을 모두 만들 수 있습니다. 또한, 생산성이 매우 높으므로 모바일 게임과 같 이 인터페이스와 조작법이 단순한 게임은 그래픽 리소스(Resources)만 준비되어 있다면 며칠 내에 뚝딱 만들어 낼 수도 있습니다. 그렇기 때문에 국내의 거의 모든 게임 개발사들이 유니티로 게임을 만들고 있고, 또 유니 티로 전환하고 있습니다. 저에게 오프라인으로 유니티를 배운 분들도 절반 이상이 게임 개 발자와 디자이너, 기획 담당자 등 게임 개발사의 직원들입니다. 저는 이 책이 여러분에게 유니티로 2D 및 3D 게임을 개발하는 과정을 안내하는 길잡이가 되기를 바랍니다. 이 책은 유니티의 기초부터 완성된 게임을 만드는 과정까지 순차적으로 다루고 있으며, 결과보다는 원리와 과정에 중점을 두었습니다. 게임의 난이도를 이제 게임 개발에 입문하려는 초심자의 수준에 맞췄으므로 독자들이 중학생 정도의 기초 지식만 있 다면 무난히 소화할 수 있을 것으로 생각합니다. 이 책의 주요 내용 이 책은 다음과 같이 구성되어 있으므로 각 장의 내용을 충실히 학습하면 자신이 구상하고 있는 게임은 디자인 등의 부분에서는 완성도가 조금 떨어지더라도 기술적으로는 충분히 구현할 수 있을 것으로 믿습니다. 실제로 이 책에서 사용하는 대부분의 게임은 SK T아카 데미와 강남 그린컴퓨터학원에서 실습 예제로 사용하고 있는 것들입니다. CHAPTER 1 _ UNITY3D의 개요 이 장은 유니티의 특징 및 장점에 대해 다루고 있다. CHAPTER 2 _ 컴퓨터 그래픽 이 장은 게임 개발자가 필수적으로 갖추어야 할 그래픽에 대한 기본 상식과 3D 그래픽스 의 구성 요소에 대해 배울 수 있다. xiv 머리말

CHAPTER 3 _ 유니티의 인터페이스 이 장에서는 유니티의 설치와 유니티의 인터페이스, 유니티의 구성 요소에 대해 학습한다. CHAPTER 4 _ 게임 제작의 기초(1) 유니티로 게임 제작을 할 때 필수적으로 필요한 게임의 구성 요소와 유니티의 좌표계, 조 명, 카메라, 물체의 충돌과 반사, 사운드, 게임 오브젝트에 질감을 부여하는 방법, 키보드 로 움직이는 방법 등에 대해 학습한다. CHAPTER 5 _ 게임 제작의 기초(2) 유니티의 애니메이션, GUI(Ggraphical User Interface), 슈팅 게임 만드는 법, 배경 화면 스크롤, 게임 오브젝트의 이동 범위 제한, 파티클 만드는 법, 셀 애니메이션, 길찾기(Path Find) 등 실제 게임에서 사용하는 테크닉을 배울 수 있다. CHAPTER 6 _ 계란받기 게임 하늘에서 내려오는 계란을 바구니로 받아내는 게임이다. 마우스나 모바일 기기의 터치를 이용해서 바구니를 이동하며, 실제의 게임을 만드는 전체 과정에 대해 학습한다. CHAPTER 7 _ Flying Owl 나뭇가지를 밟고 하늘 위로 점프하는 올빼미를 제어하는 게임이다. 올빼미의 동작에 카메 라를 동기화시키는 법. 올빼미가 화면을 벗어나지 않도록 제어하는 법, 모바일 기기의 중 력가속도(자이로) 센서 사용법 등에 대해 학습한다. CHAPTER 8 _ 클레이 사격 화면의 좌우에서 날아오는 접시를 맞추는 사격 게임이다. 총을 마우스의 방향으로 회전하 는 법, 마우스 위치의 물체를 식별하는 법과 실탄을 장전하고 탄피를 배출하는 애니메이션 을 만드는 법 등에 대해 학습한다. 머리말 xv

CHAPTER 9 _ Dungeon의 Alien 화면의 여기저기에서 나타나는 에일리언을 퇴치하는 게임이다. 주인공이 접근하면 자동으로 열리는 문, HP(Health Power) 처리, 마우스 위치로 주인공을 회전시키는 법, 레이저와 화염 탄을 발사하는 법, 화면에 프로그레스바를 표시하는 법 등에 대해 학습한다. CHAPTER 10 _ Temple Run 유니티가 제공하는 3인칭 컨트롤러를 이용해서 만든 달리기 게임이다. 주인공의 달리기, 점프, 정지 등의 애니메이션을 활용하는 법, 다리를 무작위로 만드는 법, 주인공이 다리 가 장자리로 접근하지 않게 하는 법, 모바일 기기의 중력가속도 센서와 터치로 주인공을 제어 하는 법, 별도의 카메라로 배경을 처리하는 법 등에 대해 학습한다. CHAPTER 11 _ Memory Test 두 개의 카메라를 이용한 카드 짝찾기 게임이다. 카드 회전 애니메이션, 애니메이션 이벤 트를 이용한 카드의 앞뒷면 처리, 카드 섞기와 짝 판정, 맵(Map)을 이용한 게임 스테이지 구성, 게임 타이틀 만드는 법 등에 대해 학습한다. CHAPTER 12 _ 운석 피하기 화면 여기저기에서 나타나는 운석을 피해서 우주선을 지정한 장소로 이동하는 게임이다. 우주선의 방향에 따른 배경 화면 스크롤, 우주선의 회전과 이동, 전투 모드와 운행 모드, 게임의 상태에 따른 오브젝트의 동기화 등의 방법에 대해 학습한다. 이 책의 대상 독자 이 책은 게임을 만들어 보려는 생각을 가지고 있는 모든 사람들을 대상으로 하고 있지만, 독자들은 최소한 다음 중 적어도 두세 가지는 해당되어야 할 것으로 생각합니다. C#을 조금은 할 수 있다. C#은 잘 모르지만 다른 프로그래밍 언어는 어느 정도 구사할 수 있다. 포토샵은 조금 다룰 줄 안다. 포토샵은 잘 몰라도 윈도우즈 그림판은 다룰 줄 안다. 중학생 정도의 수학과 물리학의 기초 지식은 있다. 3ds 맥스나 마야, 브렌더 등의 3D 툴을 다룰 수 있다. xvi 머리말

이 책에서 만드는 게임은 모두 C# 스크립트로 작성됩니다. C#은 자바 계열의 언어이지만, 자바나 C#이 모두 C/C++에 기원을 두고 있으므로 C/C++의 개발 경험이 있는 개발자 는 무난히 소화할 수 있을 것으로 생각합니다. 이 책은 C# 언어에 대한 설명서가 아니므로 C#의 문법적인 설명은 대부분 생략하고 있습니다. 유니티의 C# 스크립트는 C#의 아주 기초적인 문법만 사용합니다. 따라서 프로그래밍 언 어에 대한 깊은 지식이 없어도 이 책의 내용을 따라하다 보면 기본적인 지식을 습득할 수 있을 것으로 생각합니다. 아직 C#에 대한 지식이 없는 분이라면 인터넷의 C# 강좌 등을 참고하면 많은 도움이 될 것으로 생각합니다. 독자 A/S 안내 이 책에서 사용한 각종 리소스, 프로젝트 파일은 아래 사이트에서 다운받을 수 있으며, 책 의 내용에 대한 궁금증 등은 독자 Q&A란을 이용하시면 최대한 성의껏 답변해 드리겠습 니다. 게임 리소스 및 프로젝트 파일 다운로드: http://afterglow.co.kr 독자 Q&A: http://afterglow.co.kr 온라인 강좌: http://foxmann.blog.me 저자 블로그: http://foxmann.blog.me 저자 이메일: foxmann@naver.com 모쪼록 이 책이 여러분의 게임 개발 실력을 한층 높여서 자신이 생각하는 것을 마음대로 구현할 수 있는 수준으로 안내하는 길잡이가 되기를 바랍니다. 끝으로, 이 책이 나오기까지 많은 노력을 해 주신 제이펍 출판사의 모든 임직원들과 SK T 아카데미, 강남그린컴퓨터학원의 모든 임직원들에게 감사의 말씀을 드립니다. 박승제 (필명, 저녁놀) 머리말 xvii

UNITY 3D의 개요 01 CHAPTER 게임 엔진은 게임 개발에 필요한 각종 라이브러리와 리소스를 관리하는 툴이다. 게임 엔진을 사용하면 사 용하지 않는 것에 비해 훨씬 더 적은 노력으로 고품질의 결과물을 만들어 낼 수 있다. 물론, 수학과 물리학에 전문적인 지식이 있는 개발자들은 게임 엔진이나 외부 라이브러리를 사용하지 않 고도 자신이 생각한 것을 충분히 구현할 수 있을 것이다. 그러나 이제 개발에 입문하려는 초심자들은 게 임 엔진을 사용하지 않으면 게임 개발 자체가 불가능할 수 있다.

1.1 왜 게임 엔진을 사용하는가? 게임뿐만 아니라 컴퓨터로 뭔가를 개발하려면 먼저 프로그래밍 언어와 그것과 관련된 처 리 절차(알고리즘, Algorithm)을 이해해야 하는데, 이게 만만한 게 아니라서 수년간 전산을 전공한 사람들도 막상 실무에 투입되면 전혀 컴맹과 다름없는 상황에 처할 수 있다. 또한, 프로그래밍 언어는 인간의 자연어처럼 종류가 매우 많아서 특정한 언어 한 가지만으로 모 든 것을 해결할 수도 없다. 현재 가장 많이 사용되는 프로그래밍 언어인 C만 하더라도 C, C++, 오브젝티브-C, C# 등 여러 가지가 있고, 문법이 달라 서로 호환되지도 않는다. 게임 엔진은 복잡한 알고리즘과 물리적, 수학적인 처리를 담당하는 프로그램의 한 부품이 다. 자동차에 강력한 엔진을 달면 차가 더 잘나가듯이, 게임 엔진을 사용하면 훨씬 더 고품 질의 결과물을 만들 수 있으며, 프로그래밍 언어와 알고리즘을 잘 모르는 초심자들도 웬만 한 게임은 만들 수 있다. 그림 1-1 UNITY 3D 게임 엔진 2 CHAPTER 01 UNITY 3D의 개요

1.2 UNITY 3D 소개 UNITY 3D(이하 유니티로 통일해서 표기)는 2005년 덴마크에서 시작된 멀티 플랫폼 엔진이 다. 처음 1.0 버전은 맥(Mac) 기반의 게임을 제작하기 위해 개발되었으며, 점차 발전해 서 2.0에서 윈도우즈와 웹 빌드를 지원하고, 3.0에서는 안드로이드까지 지원하면서 지 금의 모습이 되었다. 유니티는 세계 엔진 Top 5에 선정되었고, 2010년 기술 혁신상을 수상하였으며, EA 등의 거대 기업에서도 정식으로 도입하고 있다. 이미 우리나라의 대 기업들도 도입을 하고 있는 등 한마디로 화제의 중심에 서 있는 멀티 플랫폼용 게임 엔 진이라고 할 수 있다. 그림 1-2 유니티로 제작한 3D 게임 삼국지를 품다. 유니티는 무료 버전으로 모든 애플리케이션을 개발할 수 있다. 무료 버전에는 몇 가지 기 능이 빠져 있지만, 독립 개발자나 이제 막 시작하는 개발사 등에게 자금에 대한 부담을 덜 어주는 최고의 라이선스 정책이라고 할 수 있을 것이다. 유니티는 게임 엔진으로 알려져 있지만, 게임 이외에도 교육, 출판, 앱, 건축, 디자인, 인테리어, 시뮬레이션, 의학, 군사 1.2 UNITY 3D 소개 3

등 다양한 분야에서 활용되는 개발 플랫폼이다. 또한, 유니티는 소프트웨어 개발 기술의 발전 방향인 객체지향 설계를 기본적으로 탑재하 고 있어서 최고의 개발 효율을 발휘할 수 있다. 유니티의 기본 철학인 단순함과 강력함은 개발자로 하여금 복잡한 알고리즘에서 벗어나 자신이 구현하고자 하는 창의적인 것에 초 점을 맞출 수 있도록 한다. 그림 1-3 UNITY 3D로 만든 게임들 1.3 UNITY 3D의 특징 유니티는 계속해서 버전이 올라가면서 다양한 기능이 추가되고 있으므로 유니티의 특징을 몇 마디로 설명하기는 곤란하다. 유니티는 사용자 관점에서 보면 다음과 같은 특징이 있다 고 할 수 있다. 4 CHAPTER 01 UNITY 3D의 개요

(1) 무료이다 유니티는 무료 버전, 그리고 비교적 적은 비용으로 모든 기능을 사용할 수 있는 프로(Pro) 버전이 있다. 프로 버전도 수억 원대에 달하는 다른 엔진에 비하면 비교할 수 없이 값이 싸 다. 무료 버전에는 몇 가지 기능이 빠져 있지만, 독립 개발자나 이제 막 시작하는 개발사 등에게 자금에 대한 부담을 덜어주는 최고의 라이선스 정책이다. 일단, 무료 버전으로 게 임을 개발한 후 프로 버전을 구매해서 게임을 배포하면 된다. 물론, 무료 버전으로 개발한 게임도 배포할 수 있으며 라이선스에 대한 제약은 없다. 무료 버전으로 개발한 게임은 유 니티 로고가 표시되는데, 이것만 감수할 수 있으면 얼마든지 무료 버전으로도 개발해서 배 포할 수 있다. 그림 1-4 유니티는 누구나 무료로 사용할 수 있는 무료 버전이 있다. (2) 멀티 플랫폼을 지원한다 유니티는 게임을 제작하면 자동으로 실행 파일이 만들어지는 원 소스 멀티유스(One Source Multi- Use) 방식으로 설계되었으며 다양한 플랫폼을 지원한다. 게임을 제작한 후 최종적으로 빌드(build)할 때 플랫폼을 설정하면 해당 플랫폼이 사용하는 언어로 자동 컴 파일되므로, 개발자가 플랫폼이 사용하는 언어에 대해 깊은 지식이 없어도 된다. 멀티 플 1.3 UNITY 3D의 특징 5

랫폼을 지원한다는 것은 게임 제작사나 개인 개발자 입장으로서는 무엇과도 바꿀 수 없는 아주 큰 매력이다. 그림 1-5 유니티가 지원하는 다양한 플랫폼 최근에 발표된 유니티 4.2 버전은 윈도우 스토어 앱, 윈도우폰 8과 블랙베리 10을 지원한 다. 특히, 유니티 4.2 버전부터는 무료 버전으로도 윈도우 스토어 앱, 블랙베리, 안드로이 드 빌드가 가능하다. 그림 1-6 유니티의 Build Setting에서 플랫폼을 설정한다. 6 CHAPTER 01 UNITY 3D의 개요

(3) 통합 개발 환경을 지원한다 유니티는 모든 기능을 하나의 프로그램에서 관리하는 통합형 게임 엔진이다. 게임의 디자 인을 쉽게 할 수 있도록 그래픽 프로그램과 유사한 인터페이스를 제공하므로 누구나 쉽게 배울 수 있다. 유니티의 대부분의 기능은 컴포넌트(Component) 형태로 만들어서 자유롭 게 끌어다 붙이도록 설계되었다. 게임을 실행하면 각종 변수의 상태가 모니터링되고, 변수 의 값을 직접 바꿔서 게임의 상태를 관찰할 수도 있으므로 디버깅 또한 아주 쉽다. 그림 1-7 유니티의 통합 개발 환경 (4) 다양한 애셋을 지원한다 애셋(Asset)은 게임 제작에 사용되는 각종 자원(리소스, Resource)이다. 여기에는 3D 오브 젝트, 2D 그래픽 이미지, 각종 사운드, 비디오, 조명, 파티클(Particle) 등이 포함된다. 유 니티는 3ds Max나 Maya 등에서 제작한 3D 오브젝트는 물론, psd, png, gif, bmp, tga 등의 그래픽 이미지를 수정 없이 사용할 수 있다. wav, mp3, ogg, mod 등의 사운 드를 사용할 수 있으며, mpeg, mov 등의 동영상도 재생할 수 있다. 1.3 UNITY 3D의 특징 7

유니티는 별도의 애셋 스토어를 운영하고 있는데, 여기에 다양한 리소스가 등록되어 있으 므로 무료 및 실비로 게임에 필요한 리소스를 다운받아 사용할 수 있다. 그림 1-8 유니티의 애셋 스토어 (5) 물리 기반 엔진이다 물리 기반 엔진은 개발자로 하여금 복잡하고 어려운 수학에서 벗어나 보다 창의적인 분야 에 집중할 수 있게 해 준다. 유니티에는 강력한 NVIDIA R PhysX R 물리 엔진이 포함되어 있으므로 모든 오브젝트는 물리학의 통제 하에 행동할 수 있도록 한다. 예를 들어, 포탄을 발사할 때나 골프공을 타격했을 때의 포탄과 골프공의 비행 궤도와 낙하지점 계산, 공이 바운드되었을 때의 운동 등은 매우 복잡한 물리학적 원리와 수식이 필요하겠지만, 유니티 는 이와 같은 처리를 자동으로 수행한다. 중력의 영향, 질량, 물체의 탄성계수 등만 설정해 주면 나머지는 모두 유니티가 알아서 해 줄 것이다. 따라서 개발자는 복잡한 물리와 수학 을 떠나 자신이 구현하고 싶은 부분에만 집중할 수 있다. 8 CHAPTER 01 UNITY 3D의 개요

그림 1-9 물리 엔진은 오브젝트의 사실적인 움직임을 구현해 준다. (6) 스크립트를 사용한다 스크립트(Script)는 구조적이며 컴파일이 필요한 C/C++과 같은 언어들에 비해 제한된 능 력을 지니고 있지만, 프로그램을 빠르게 작성할 수 있으며 언어의 제한적인 기능만 사용하 므로 초심자들이 배우기가 쉽다는 장점이 있다. 유니티 프로그램은 모두 짧고 간결한 스크 립트 형태로 작성한다. 유니티에서는 Javascript, C#, Boo 스크립트를 선택적으로 사용 할 수 있으므로 자신이 즐겨 사용하는 언어로 게임을 개발할 수 있다. 유니티에서 스크립트로 개발한 게임은 플랫폼이 달라질 때 해당 플랫폼에 맞게 다시 컴파 일된다. 따라서 개발자가 개발하려는 플랫폼이 사용하는 언어를 따로 배울 필요가 없다. 예를 들어, 안드로이드 단말기는 Java를 사용하지만, 유니티로 게임을 개발할 때는 Java 를 전혀 몰라도 안드로이드용 게임을 개발할 수 있다. 그림 1-10은 일반적인 개발 방식과 유니티의 개발 방식을 비교한 것이다. 일반적인 방식에서는 각각의 캐릭터를 제어하는 프 로그램 코드를 통합해서 작성하지만, 유니티는 캐릭터마다 별도의 스크립트를 작성한다. 1.3 UNITY 3D의 특징 9

그림 1-10 게임 개발 방식의 비교 (7) 체계적인 레퍼런스를 제공한다 유니티는 인터넷을 통해 매우 체계적이고 자세한 레퍼런스 매뉴얼을 제공한다. 유니티의 거의 모든 기능에 대해 소스 코드를 제공하므로 그 기능과 활용법을 쉽게 배울 수 있다. 레 퍼런스는 유니티의 편집기에서 [Help Unity API Reference] 메뉴를 클릭하거나 C+, 키를 누르면 현재 커서가 위치한 항목에 대한 도움말이 나타난다. 대부분의 명령과 함수에 대해 예제를 제공하며, 소스 코드는 Javascript, C#, Boo 스크립트가 각각 제공되므로 자 신이 사용하는 언어의 예제를 참조하면 많은 도움을 받을 수 있다. 10 CHAPTER 01 UNITY 3D의 개요

그림 1-11 웹을 통해 제공되는 유니티의 레퍼런스 매뉴얼 이외에도 유니티에는 실시간 렌더링 시스템, 메카님(Mecanim)이라는 휴먼(Human) 애니 메이션 시스템, 비스트(Beast) 라이팅 시스템 등 아주 다양한 기능이 있다. 1.3 UNITY 3D의 특징 11

컴퓨터 그래픽 02 CHAPTER 게임 개발자는 반드시 컴퓨터 그래픽에 대한 이해가 있어야 한다. 3ds Max나 Maya와 같은 전문적인 모 델링 툴은 다룰 줄 모르더라도 최소한 3D Model의 구성 원리는 알아야 하며, Photoshop과 같은 2D 그래 픽 툴도 하나쯤 다룰 줄 알아야 한다. 포토샵이 어렵다면 최소한 윈도우즈의 그림판 정도는 다룰 수 있어 야 한다.

2.1 컴퓨터 그래픽의 구분 컴퓨터 그래픽(Computer Graphics)은 구현하는 방식에 따라 몇 가지로 구분된다. (1) 래스터 그래픽 래스터 그래픽(Raster Graphics)은 직사각형 격자의 화소와 색상을 점의 형태로 모니터나 종이 등에 표시하는 그래픽 처리 기술이다. 비트맵(Bitmap)이라고도 한다. 유니티는 대부 분의 2D 그래픽 이미지를 읽을 수 있다. 특징 각각의 화소를 RGB/ARGB(유니티는 RGBA) 형태로 표시한다. 화소의 정보량(색 깊이)에 의해 화질이 결정되므로 고해상도의 이미지를 처리하기 위해 데이터 압축 기술을 사용한다. 이미지를 확대하면 경계 부분이 거칠어지는 계단 현상이 생긴다. 소프트웨어 확장자 그림판, Photoshop, Paintshop Pro, Corel Painter, Gimp 등 bmp, gif, jpg, png, psd, tga, pcx, tiff 등 그림 2-1 래스터 그래픽은 확대하면 그림이 거칠어진다. (2) 벡터 그래픽 벡터 그래픽(Vector Graphics)은 수학 방정식을 기반으로 하여 점, 직선, 곡선, 다각형 등 의 도형을 표현하는 그래픽 처리 기술로, 이미지를 오브젝트(Object)의 집합으로 처리한 다. 유니티는 벡터 그래픽을 지원하지 않는다. 벡터 그래픽은 래스터 그래픽으로 변환하 면 유니티에서 읽을 수 있다. 14 CHAPTER 02 컴퓨터 그래픽

특징 이미지를 객체(Object)의 집합으로 처리한다. 곡선과 색의 깊이 등을 처리하기 위해 Bezier, Spline 등의 다양한 알고리즘을 사용 한다. 데이터 크기가 작으며, 이미지를 확대해도 거칠어지지 않는다. 풍경 사진과 같은 자연스러운 이미지를 구현하기에는 부적합하다. 소프트웨어 확장자 Illustrator, Corel Draw, Flash, AutoCAD의 평면 도형 등 ai, cdr, eps, wmf, fla, swf, dwg 등 그림 2-2 벡터 그래픽은 오브젝트의 집합으로 이미지를 표현한다. (3) 3D 그래픽 3D 그래픽(3D Graphics)은 오브젝트의 기하학적 데이터를 폭, 높이, 깊이를 나타내는 (x, y, z)축의 공간 좌표를 이용하여 3차원으로 표현한 후, 화면이나 종이 등의 2차원의 결과 물로 출력하는 컴퓨터 그래픽 기술이다. 유니티는 대부분의 3D 오브젝트를 읽을 수 있다. 특징 오브젝트를 표시하기 위한 Modeling, 오브젝트에 재질과 표면 처리를 위한 매 핑(Mapping), 카메라와 조명 등을 고려하여 완성된 이미지를 만드는 렌더링 (Rendering) 과정이 필요하다. 영화, 애니메이션, 광고, 게임 등의 엔터테인먼트 분야와 시뮬레이션, 건축, 디자인 등의 설계 및 예술의 표현 수단으로 각광을 받고 있다. 소프트웨어 확장자 3ds Max, Maya, Cinema 4D, Blender, Sketchup Pro 등 3ds, max, ma, c4d, blender, dae, skp, fbx 등 2.1 컴퓨터 그래픽의 구분 15

그림 2-3 3D 그래픽은 3차원의 도형을 2차원의 평면에 표시한다. 2.2 3D 모델의 종류 3D 오브젝트는 표현하는 방법에 따라 몇 가지 형태로 구분된다. (1) 와이어프레임 모델 와이어프레임 모델(Wireframe Model)은 물체의 표면을 작은 면(삼각형 또는 사각형)으로 분 할하고, 평면을 점, 직선, 곡선으로 표시한다. 데이터의 양이 적어 모델링을 고속으로 처리 할 수 있다. 그러나 가려져 있어 보이지 않아야 할 부분(Hidden Line)까지 보이게 된다. (2) 서피스 모델 서피스 모델(Surface Model)은 와이어프레임 오브젝트에 면을 입힌 형태다. 오브젝트의 내부는 텅 빈 공간으로 표현되며, 오브젝트의 표면과 안쪽 면이 존재한다. 와이어프레임 모델보다는 데이터의 양이 많지만 솔리드 모델보다는 적다. 그래서 고속으로 렌더링할 수 있으므로 게임에서는 모두 서피스 모델을 사용한다. 물론, 유니티도 서피스 모델을 사용한다. 16 CHAPTER 02 컴퓨터 그래픽

(3) 솔리드 모델 솔리드 모델(Solid Model)은 두부나 벽돌처럼 오브젝트의 내부가 채워져 있는 덩어리 형태 로, 오브젝트의 질량, 부피, 강도 등의 정보를 구할 수 있다. 내부가 채워져 있으므로 서로 더하거나 빼는 등의 작업이 가능하다. 데이터 양이 많고 작업 속도가 느리므로 게임에서는 사용하지 않는다. 그림 2-4 와이어프레임 모델, 서피스 모델, 솔리드 모델 2.3 3D 모델링 방법 3D 오브젝트는 생김새에 따라 다양한 방법으로 모델링한다. (1) 로프트 모델링 로프트 모델링(Loft Modeling)은 2D Shape를 두께 및 경로(Path)로 돌출시켜 3D 오브젝 트를 만드는 방식이다. 오브젝트의 단면을 기본 도형으로 만들고 여기에 직선 및 곡선 경 로의 높이를 부여한다. 여러 개의 Shape와 Scale 등의 변형을 이용해서 다양한 형태의 모 델을 만들 수 있다. 그림 2-5 로프트 모델링은 기본 도형을 경로를 따라 돌출시켜 만든다. 2.3 3D 모델링 방법 17

(2) 레이드 모델링 레이드 모델링(Lathe Modeling)은 2D Shape를 지정한 회전축을 중심으로 회전시켜 3D 오브젝트를 만드는 방식이다. Step을 설정해서 다각형 형태의 모델을 만들 수 있으며, 회 전 각도를 지정해서 단면체도 만들 수 있다. 그림 2-6 레이드 모델링은 2D Shape를 회전시켜서 만든다. (3) 프리미티브 모델링 프리미티브 모델링(Primitive Modeling)은 구(Sphere), 육면체(Box), 원기둥(Cylinder) 등 의 기본 도형을 이용해서 모델링하는 방식이다. 불리언(Boolean) 연산이나 도형의 표면을 돌출시켜 새로운 면을 생성해서 최종적인 오브젝트를 만든다. 일반적으로 가장 많이 사용 하는 모델링 방법이다. 그림 2-7 프리미티브 모델링은 기본 도형을 활용해서 최종적인 모델을 만든다. (4) 패치 모델링 패치 모델링(Patch Modeling)은 사각형의 패치를 이어 붙여서 오브젝트의 표면을 만드는 모델링 방식이다. 다양한 형태의 곡면으로 구성된 오브젝트의 모델링에 사용되며, 제작 시 간이 가장 많이 걸린다. 사람의 얼굴과 같이 실물과 유사한 오브젝트를 만들 수 있다. 18 CHAPTER 02 컴퓨터 그래픽

그림 2-8 패치 모델링은 패치를 이어서 표면을 만든다. 2.4 서피스 모델의 종류 게임에서는 오브젝트의 연산 속도가 빠른 서피스 모델을 사용한다. 서피스 모델은 구현 방 식에 따라 몇 가지로 구분된다. (1) 폴리곤 방식 폴리곤(Polygon) 방식은 오브젝트의 모든 면을 삼각형의 집합으로 구성하며, 면의 수를 원 하는 만큼 조절할 수 있어 렌더링 속도가 가장 빠르다. 따라서 대부분의 게임에서는 폴리 곤 방식을 사용한다. 3ds Max는 폴리곤 방식을 사용하며, 폴리곤 방식은 다음과 같은 특 징이 있다. 세 점의 위치를 (x, y, z)로 표현한다. 완성 후의 변형이나 면의 추가 및 변형이 쉽다. 거의 모든 폴리곤의 불리언 연산이 가능하다. 부드러운 곡면은 폴리곤을 분할해서 처리한다. 곡면을 확대하면 평면이 된다. 2.4 서피스 모델의 종류 19

그림 2-9 폴리건 방식의 모델링 (2) 넙스 넙스(NURBS, Non-Uniform Rational B-Spline)는 B-Spline을 이용해서 점을 나타내고, 점을 기본으로 곡면을 구성한다. 넙스는 모델의 부드러운 곡면의 표현이 가능하며, 면 을 확대해도 곡면을 유지한다. 오브젝트를 가장 섬세하게 모델링할 수 있으므로 Maya, Blender 등에서는 넙스 모델링을 사용한다. 넙스는 다음과 같은 특징이 있다. 면에 조절점을 추가하면 가로 또는 세로줄의 면 모두에 조절점이 두 배로 늘어난다. 조절점 사이를 수학적으로 계산하므로 계산 시간이 많이 걸린다. 불리언 연산과 트림(Trim)이 가능하다. 넙스 모델은 폴리곤 모델로 변환이 가능하다. 게임에서는 넙스 모델을 폴리곤 모델로 변환해서 사용한다. 그림 2-10 넙스 모델링 20 CHAPTER 02 컴퓨터 그래픽

(3) 패치 방식 패치(Patch) 방식은 폴리곤과 넙스의 장점을 가지고 있는 모델링 방법으로 다음과 같은 특 징이 있다. 넙스만큼 부드러우면서 렌더링이 훨씬 빠르다. 조절점 사이를 단순한 커브로 계산한 후 Step 값으로 곡면을 조절한다. 따라서 곡면을 확대하면 평 면이 된다. 면을 나누면 가로방향 또는 세로방향의 모든 면이 두 배로 늘어난다. 불리언 연산과 트림(Trim)이 불가능하다. 패치 오브젝트는 폴리곤이나 넙스로 변환이 가능하다. 렌더링 속도는 넙스 모델보다 빠르고 폴리곤 모델보다 느리다. 게임에서는 패치 모델을 폴리곤 모델로 변환해서 사용한다. 그림 2-11 패치 방식의 모델링 2.5 3D 오브젝트의 구성 요소 3D 오브젝트는 점과 선분(직선 및 곡선), 그리고 면으로 구성된다. Vertex Edge Mesh 오브젝트의 최소 평면을 구성하는 점 Segment라고도 하며, Vertex 사이의 선분 Polygon 또는 Face라고도 하며, Edge로 구성된 오브젝트의 평면 2.5 3D 오브젝트의 구성 요소 21

그림 2-12 Vertex, Edge, Mesh 3D 오브젝트는 Mesh로 구성된 오브젝트에 색깔과 재질을 넣어야 오브젝트가 자연스럽게 표현된다. Shading Material Texture Mesh에 색을 칠해서 오브젝트를 구성하는 것 오브젝트의 재질 및 질감을 표현하기 위한 도구 Material의 질감 및 무늬를 표현하기 위한 이미지 그림 2-13 Material을 이용해서 오브젝트의 질감을 표현한다. Mapping Map uv Map Normal Rendering 오브젝트의 표면에 Material과 Texture를 부여하는 것 Mapping 방법 또는 Mapping 이미지 3D 오브젝트를 절단해서 펼친 그림 형태로 만든 이미지 오브젝트의 겉면, 또는 겉면을 나타내기 위한 법선 오브젝트에 광원 효과 등을 적용해서 완성된 이미지를 생성하는 것 22 CHAPTER 02 컴퓨터 그래픽

그림 2-14 오브젝트에 질감 무늬(Texture)를 넣을 수 있다. 그림 2-15 사람 신체의 펼친 그림 이미지(uv Map) 2.6 Light와 Camera 3D 오브젝트는 조명과 카메라에 의해 최종 완성된 형태가 표현된다. Omni Light Point Light Spotlight 태양 광선과 같이 방향만 있고 거리감이 없는 조명. Directional Light라고도 한다. 전등과 같이 방향이 없고 거리감만 있는 조명 방향과 거리감이 있으며 Spot Point가 있는 조명 2.6 Light와 Camera 23

그림 2-16 Omni Light와 Point Light의 조명 효과 카메라는 원근을 표현하느냐, 하지 않느냐에 따라 Perspective View와 Orthographic View로 구분한다. Perspective View Orthographic View 물체의 원근을 표현하는 방식으로, 가까운 곳의 물체가 크게 표시된다. 원근이 무시되어 같은 크기로 표시된다. 그림 2-17 Perspective View와 Orthographic View 게임에서 카메라는 오브젝트를 화면에 표시하기 위한 도구로 사용한다. 게임에서는 아주 멀리 떨어진 오브젝트는 표시할 필요가 없으므로 카메라의 화각과 거리를 조절하여 피사 체의 표현 범위를 제한한다. View Angle View Depth 카메라의 화각(표준, 광각, 망원) 카메라가 표시하는 피사체 표현 범위(거리) 24 CHAPTER 02 컴퓨터 그래픽

2.7 평면 좌표와 공간 좌표 평면 또는 3차원 공간에 있는 오브젝트의 위치를 지정하는 방식이다. (1) 평면 좌표 평면 좌표는 2차원 평면에 있는 도형의 위치를 표시하기 위한 좌표 시스템이다. 평면 좌표 에는 직교좌표, 극좌표, UTM 좌표, 경위도 좌표, 구면 극좌표 등이 있다. 일반적으로 평 면 좌표라고 하면 평면 직교좌표(데카르트 좌표)를 의미한다. 평면 좌표는 (x, y)축을 이용해 서 점, 평면, 직선 및 곡선을 나타내며, 유니티에서는 Vector2(x, y)로 표시한다. (2) 공간 좌표 공간 좌표는 3차원 공간에 있는 도형의 위치를 표시하기 위한 좌표 시스템이다. 공간 좌표 는 직교좌표, 원기둥 좌표, 곡선 좌표 등이 있다. 일반적으로 공간 좌표라고 하면 공간 직 교좌표를 의미한다. 공간 좌표는 (x, y, z)축을 이용해서 도형의 폭과 높이 및 깊이를 나타 내며, 유니티에서는 Vector3(x, y, z)로 표시한다. 3ds Max 등의 모델링 프로그램은 x축 과 y축을 평면(바닥), z축을 오브젝트의 높이에 사용한다. 그러나 유니티는 x축과 y축을 오브젝트의 폭과 높이, z축을 깊이(거리)에 사용한다. 그림 2-18 평면 좌표와 공간 좌표. 유니티의 z축은 깊이(거리)다. 2.7 평면 좌표와 공간 좌표 25

(3) 왼손 좌표계와 오른손 좌표계 공간 좌표에서 z축을 결정하기 위한 방법이다. 관찰자(Player)는 왼손 좌표계에서는 오브젝 트의 뒷면, 오른손 좌표계에서는 오브젝트의 정면을 본다. 유니티는 왼손 좌표계를 사용하 므로 카메라에 비치는 것은 오브젝트의 뒷면이다. 그림 2-19 왼손 좌표계와 오른손 좌표계. 왼손 좌표계는 관찰자가 오브젝트의 뒷면을 본다. 26 CHAPTER 02 컴퓨터 그래픽

유니티의 인터페이스 03 CHAPTER 유니티는 홈페이지에서 다운받아 PC에 설치한다. 평생 무료로 사용할 수 있는 무료 버전과 한 달간 사용 할 수 있는 트라이얼 프로(Trial Pro) 버전이 있다. 유니티를 설치한 후 유니티를 맨 처음 실행하면 무료 버 전과 트라이얼 프로 버전을 선택하는 창이 나타나므로 그 창에서 선택한다. 물론, 어느 버전을 사용하더 라도 사용자는 유니티 계정이 있어야 한다.

3.1 UNITY 3D 설치 UNITY 3D(이하 유니티)는 다음 사이트에서 무료로 다운받아 설치할 수 있다. DEMO Download 유니티 다운로드: http://unity3d.com 그림 3-1 unity3d.com의 홈페이지 그림 3-2 UNITY3D 다운로드 28 CHAPTER 03 유니티의 인터페이스

1 다운로드한 UnitySetup-4.2.exe를 실행하면 유니티의 설치가 시작된다. 그림 3-3 유니티 설치 시작 화면 2 소프트웨어 라이선스에 관한 페이지가 나타나면 [I Agree] 버튼을 누른다. 그림 3-4 라이선스에 동의함 3.1 UNITY 3D 설치 29

3 설치할 컴포넌트를 선택하는 화면이 나타나면 모두 선택한 후 [Next] 버튼을 누른다. 그림 3-5 설치할 컴포넌트 지정 4 유니티 설치 폴더를 설정한 후 [Install] 버튼을 누른다. 그림 3-6 유니티 설치 폴더 설정 30 CHAPTER 03 유니티의 인터페이스

5 잠시 후 파일 복사가 끝나면 [Finish] 버튼을 누른다. 그림 3-7 유니티 설치 완료 6 유니티 설치가 끝나면 자동으로 유니티가 실행된다. 이때 유니티의 라이선스를 확인하는 창이 나타나므로 Activate a free 30-day trial of Unity Pro 항목을 선택한 후 [OK] 버튼을 누른다. 이 옵션을 선택하면 30일간 유니티 프로 버전을 사용할 수 있다. 30일이 지나면 무료 버전으로 바뀔 것이다. 그림 3-8 유니티 프로 버전 지정 3.1 UNITY 3D 설치 31

7 로그인 창이 나타나면 [Create Account] 버튼을 눌러 새로운 계정을 만든다. 그림 3-9 유니티 계정 만들기 8 사용자 이름과 이메일, 비밀번호를 입력한 후 [OK] 버튼을 누르면 등록절차가 끝난다. 그림 3-10 새 계정으로 사용할 이름과 이메일 입력 32 CHAPTER 03 유니티의 인터페이스

그림 3-11 계정 등록 완료 9 Project Wizard 창이 나타나면 [Open] 버튼을 누른다. 그림 3-12 AngryBots 프로젝트 로드 10 유니티가 제공하는 데모 게임 AngryBots가 로드된다. 플레이( ) 버튼을 누르면 곧바로 게임을 실행할 수 있다. 3.1 UNITY 3D 설치 33

그림 3-13 유니티의 초기 화면. AngryBots 프로젝트가 로드된다. 그림 3-14 AngryBots 게임 실행 화면 34 CHAPTER 03 유니티의 인터페이스

3.2 유니티의 환경 설정 유니티는 크게 5개의 영역으로 구성되어 있는데, 각각의 영역을 뷰(View)라고 부른다. (1) 뷰의 배치 [Window Layouts] 메뉴를 실행하면 뷰의 배치를 바꿀 수 있다. 그림 3-15 [Window Layouts] 메뉴 3.2 유니티의 환경 설정 35

그림 3-16 뷰의 배치 뷰의 배치는 각자의 취향에 맞도록 하면 되겠지만, 대부분 2 by 3 형식을 사용한다. 뷰의 제목 영역을 드래그하면 뷰가 독립된 창으로 표시되거나 다른 뷰에 결합한다. (2) 프로젝트 뷰의 칼럼 설정 프로젝트 뷰(Project View)는 폴더 구조를 계층적으로 표시하기 위해 좌우 두 개의 칼럼으 로 나누어져 있다. 프로젝트 뷰의 오른쪽 위에 있는 빗금 모양의 아이콘을 클릭하면 칼럼 수를 변경할 수 있다. 36 CHAPTER 03 유니티의 인터페이스

그림 3-17 프로젝트 뷰의 칼럼 설정 폭이 좁은 모니터를 사용하는 경우에는 Project 뷰를 Hierarchy 뷰 아래에 끌어다 두면 그림 3-20처럼 Scene 뷰 및 Game 뷰가 넓어지는 효과가 있다. 그림 3-18 프로젝트 뷰를 Hierarchy 뷰 아래에 배치하면 Scene 뷰 및 Game 뷰가 넓어진다. 3.2 유니티의 환경 설정 37

(3) 화면 배색 설정 유니티의 화면 배색은 [Edit Properties] 메뉴의 [General Skin] 항목에서 설정한다. 그림 3-19 [Edit Properties] 메뉴 그림 3-20 유니티의 화면 배색과 뷰의 위치를 조절한 화면 38 CHAPTER 03 유니티의 인터페이스

3.3 유니티의 인터페이스 유니티는 툴바(Toolbar)와 5개의 뷰로 구성되어 있다. 그림 3-21 유니티의 화면 구성 3.3.1 새 프로젝트 시작 유니티의 인터페이스를 알아보기 위해 새 프로젝트를 만든다. 유니티는 작업 파일을 프로젝트 단위로 관리한다. [File New Project] 메뉴를 실행하면 새로운 프로젝트를 만들 수 있다. 3.3 유니티의 인터페이스 39

그림 3-22 New Project [Project Wizard] 창이 나타나면 프로젝트를 저장할 폴더를 지정한 후 [Create] 버튼을 누른 다. 작업 폴더를 지정하지 않으면 내문서 폴더에 저장된다. 유니티는 한글로 작성된 폴더 명은 인식하지 못하므로 폴더의 경로에 한글을 사용하지 말아야 한다. 예를 들어, 다음과 같은 폴더는 사용할 수 없다. D:\작업문서\unity\project_1 경로(Path)에 한글이 들어가면 안 된다. 그림 3-23 새 프로젝트의 작업 폴더 설정 새 프로젝트가 시작되면 씬(Scene) 뷰에 카메라만 있는 빈 화면이 나타난다. 40 CHAPTER 03 유니티의 인터페이스

그림 3-24 새 프로젝트에는 빈 화면에 카메라만 나타난다. 3.3.2 GameObject 설치 GameObject(이하 오브젝트)는 게임 화면에 나타나는 모든 요소로 캐릭터, 조명, 카메라 등 이 여기에 해당한다. Hierarchy 뷰의 [Create] 버튼을 누르면 오브젝트에 관련된 부메뉴 가 나타나므로 여기에서 지정한다. 일단, Cube를 하나 설치한다. Cube는 정육면체 오브 젝트다. 3.3 유니티의 인터페이스 41

❶ ❷ 그림 3-25 새로운 오브젝트를 설치하면 씬 뷰와 게임 뷰에 나타난다. 3.3.3 툴바 툴바(Toolbar)는 5개의 컨트롤로 구성되어 있다. 그림 3-26 유니티의 툴바 변환 툴 토글 버튼 플레이 버튼 레이어 레이아웃 씬 뷰에 사용된다. 씬 뷰의 표시에 영향을 준다. 게임의 Play/Pause/Stop에 사용된다. 오브젝트의 레이어 설정에 사용된다. 뷰의 배치를 설정한다. [Window Layouts] 메뉴와 같은 기능이다. 42 CHAPTER 03 유니티의 인터페이스

3.3.4 씬 뷰 씬(Scene)은 게임을 구성하는 각각의 화면이다. 예를 들면, 게임 타이틀 화면, 도움말 화 면, 게임 화면 등이 될 것이다. 따라서 게임은 하나 이상의 씬이 필요하다. 씬 뷰는 오브젝 트를 배치하고 카메라와 조명을 설치하여 실제로 게임을 디자인하는 곳이다. 그림 3-27 씬 뷰(Scene View) (1) 기즈모 씬 뷰에는 카메라, 조명, 사운드 등과 오브젝트의 방향 등을 나타내기 위해 여러 가지 아이 콘이 사용된다. 이와 같이 보이지 않는 요소를 시각적으로 나타내기 위한 아이콘을 기즈모 (Gizmo)라 한다. 씬 뷰의 오른쪽 위에는 뷰의 방향을 지시하기 위한 Scene Gizmo(씬 기즈 모)가 있다. 유니티는 y축이 위인 왼손 좌표계를 이용해서 3차원 공간을 나타낸다. 씬 기즈 모는 씬을 보여주는 카메라의 회전 상태를 나타낸다. 씬 기즈모의 원뿔을 클릭하면 카메라 는 그 축으로 회전한다. 그림 3-28 씬 기즈모의 카메라 방향 3.3 유니티의 인터페이스 43

(2) 퍼스펙티브 뷰와 아이소메트릭 뷰 퍼스펙티브(Perspective) 뷰는 카메라의 원근이 적용되는 뷰다. 가까운 오브젝트는 크게, 먼 곳은 작게 표시한다. 아이소메트릭(Isometric) 뷰는 원근이 적용되지 않으므로 거리와 관계없이 오브젝트는 같은 크기로 표시된다. 씬 기즈모(Scene Gizmo)의 네모 부분이나 아 래에 있는 글자(Persp/Iso)를 클릭하면 퍼스펙티브 뷰와 아이소메트릭 뷰가 서로 바뀐다. 그림 3-29 퍼스펙티브 뷰(Perspective View)와 아이소메트릭 뷰(Isometric View) (3) 오브젝트의 이동/회전/확대 및 축소 씬 뷰에 있는 오브젝트를 선택하면 오브젝트에 방향을 지시하는 기즈모가 나타난다. 이동/ 회전/확대 및 축소에 사용되는 x, y, z축은 빨강(R), 초록(G), 파랑(B)으로 표시된다. 즉, x, y, z축은 각각 RGB에 대응한다. 그림 3-30 오브젝트의 이동/회전/확대 및 축소 기즈모의 화살표 또는 각 축의 선분을 드래그하면 오브젝트가 해당 축의 방향으로 이동/회 전/확대 및 축소된다. 이때 오브젝트의 중심 부분을 드래그하면 3축 방향으로 이동/회전/ 확대 및 축소된다. 44 CHAPTER 03 유니티의 인터페이스

(4) 씬 뷰의 이동/회전/줌 씬 뷰는 사용자의 눈을 가상의 카메라로 설정해서 카메라가 바라보는 시점으로 표시된다. 카메라는 이동, 회전, 줌인/줌아웃할 수 있으며, 마우스로 조작한다. 씬 뷰의 이동/회전/ 줌은 실제의 게임에는 영향을 주지 않는다. 카메라 이동(마우스 휠 드래그) 카메라 회전(오른쪽 버튼 드래그) 카메라 줌인/줌아웃(마우스 휠 스크롤) 1 카메라 이동 버튼( )이 선택되어 있으면 왼쪽 마우스로 이동할 수 있다. 마우스 휠을 누르고 드래그하면 카메라 이동 버튼 선택 여부와 상관없이 카메라를 이동할 수 있다. 2 퍼스펙티브 뷰에서는 화면 아래를 중심으로 회전하고, 아이소메트릭 뷰에서는 화면 가운데를 중심으로 회전한다. A 키를 누르고 왼쪽 버튼을 드래그하면 아이소메트릭 뷰와 같이 화면 가 운데를 기준으로 회전한다. 3 A 키를 누르고 오른쪽 버튼을 드래그하면 카메라를 줌인/줌아웃할 수 있다. (5) 글로벌 좌표와 로컬 좌표 유니티에서는 오브젝트의 방향을 나타내기 위해 글로벌(Global) 좌표와 로컬(Local) 좌표 를 사용한다. 글로벌 좌표 글로벌 좌표는 월드(World) 좌표라고도 하며, 게임 화면을 기준으로 하는 절대좌표다. 지 도의 위쪽은 항상 북쪽이고, 지도를 돌려도 지도를 기준으로 한 방향은 바뀌지 않는 것처 럼 오브젝트를 회전하거나 이동해도 이 방향은 바뀌지 않는다. 오브젝트의 방향을 글로벌 좌표로 표시할 경우에는 토글 버튼을 Global로 설정한다. 오브젝트의 기즈모는 씬 기즈모 와 같은 방향으로 표시된다. 로컬 좌표 오브젝트를 기준으로 한 좌표다. 3시 방향에 적기 출현! 의 3시는 자신을 기준으로 한 방 향으로, 이것이 로컬 좌표다. 유니티는 오브젝트의 이동 및 회전에 대해 대부분 로컬 좌표 를 사용하므로 오브젝트가 향한 방향이 중요한 요소가 된다. 토글 버튼을 Local로 설정하 면 기즈모는 오브젝트의 로컬 좌표로 표시된다. 오브젝트가 회전하지 않은 경우에는 로컬 좌표와 글로벌 좌표는 같은 방향이 될 것이다. 3.3 유니티의 인터페이스 45

그림 3-31 왼쪽은 글로벌 좌표, 오른쪽은 로컬 좌표로 표시된 상태다. (6) 센터와 피봇 센터(Center)와 피봇(Pivot)은 씬 뷰에서 두 개 이상의 오브젝트를 선택하고 회전 등의 작 업을 할 때 어느 오브젝트를 기준으로 하는지를 설정한다. Center Pivot 선택한 오브젝트의 중간 지점이 기준이 된다. 맨 나중에 선택한 오브젝트가 기준이 된다. 그림 3-32 센터와 피봇. 왼쪽이 센터, 오른쪽이 피봇이다. (7) 스냅 설정 오브젝트 이동/회전/확대 시 일정한 간격/각도/비율을 유지하도록 스냅(Snap)을 설정하는 기능이다. 스냅은 [Edit Snap Settings] 메뉴에서 설정한다. Snap Settings 창의 [Snap 46 CHAPTER 03 유니티의 인터페이스

All Axes] 버튼은 선택한 오브젝트를 가장 가까운 스냅 포지션으로 이동한다. 스냅 기능은 V+ V 키를 누를 때마다 On/Off로 토글(Toggle)된다. 그림 3-33 스냅 설정 버텍스 스냅 버텍스 스냅(Vertex Snap)은 정점 스냅이라고도 하는데, 두 오브젝트의 정점(Vertex)을 맞 추는 기능이다. 이동하려는 오브젝트를 선택한 후 V 키를 누르고 있으면 기즈모가 오브 젝트의 정점에 스냅되어 이동한다. 스냅의 기준이 되는 정점을 선택한 후 다른 오브젝트로 끌고 가면 두 오브젝트의 정점이 서로 스냅되어 연결된다. V 키는 이동이 끝날 때까지 계 속 누르고 있어야 한다. 그림 3-34 V 키를 누르고 있으면 기즈모가 정점 단위로 이동한다. 3.3 유니티의 인터페이스 47

서피스 스냅 서피스 스냅(Surface Snap)은 표면 스냅이라고도 하며, 오브젝트를 물체의 표면에 정확하 게 배치하는 기능이다. 바닥이 되는 물체는 콜라이더가 있어야 한다. 콜라이더는 4.2절을 참조하라. 오브젝트를 선택한 후 V+ C 키를 누른 상태로 기즈모의 가운데 네모 부분 을 드래그하면, 오브젝트가 물체의 표면에 스냅되어 이동한다. 표면 스냅은 피봇 아이콘의 상태에 따라 다르게 배치된다. Center Pivot 오브젝트의 바닥이 물체의 표면에 스냅된다. 오브젝트의 중심이 물체의 표면에 스냅된다. 그림 3-35 오브젝트의 바닥과 중심을 바닥에 스냅한 상태 (8) 씬 뷰 컨트롤 바 씬 뷰 컨트롤 바는 오브젝트의 표시 형식(View Mode)을 변경하는 도구다. 이 도구는 씬 뷰의 표시 형식만 변경하며 실제 게임에는 영향을 주지 않는다. Draw Mode 오브젝트의 표시 형식을 설정한다. 48 CHAPTER 03 유니티의 인터페이스

그림 3-36 Textured, Wireframe, Textured Wire, Render Paths, Lightmap Render Mode 오브젝트의 렌더링 모드를 설정한다. 그림 3-37 RGB, Alpha, Overdraw, Mipmaps 3.3 유니티의 인터페이스 49

그림 3-37의 오른쪽에 있는 공은 알파(투명도)가 어느 정도 적용된 오브젝트다. Mipmaps 는 화면 해상도에 맞는 적절한 텍스처의 크기를 보여주는 것으로, 파란색은 텍스처가 더 커도 된다는 것을, 빨간색은 텍스처가 필요 이상으로 크다는 것을 의미한다. Scene Light, Grid, Audio 씬 뷰의 기본 조명, 그리드 및 사운드 재생 여부 등을 설정한다. 3.3.5 게임 뷰 게임 뷰(Game View)는 유니티로 제작한 게임의 실제 화면으로, 씬 뷰에 설치된 카메라가 보는 내용이 투영된다. 카메라의 위치 및 각도, 조명 등에 의해 게임 뷰는 다양한 형태로 나타날 것이다. 그림 3-38 게임 뷰(Game View) (1) 게임 뷰 컨트롤 바 게임의 해상도를 변경하거나 게임을 모니터링하기 위해 사용한다. 해상도 설정 게임의 해상도를 설정한다. 게임의 플랫폼에 따라 다르게 표시된다. 50 CHAPTER 03 유니티의 인터페이스

그림 3-39 PC와 안드로이드의 해상도 최대화 버튼 게임을 유니티 전체 크기로 표시한다. 상태 표시 버튼 게임의 초당 프레임 수(FPS), 사용 메모리 등을 표시한다. 그림 3-40 게임 뷰에 표시된 게임의 상태 기즈모 표시 버튼 게임 뷰에 표시되지 않은 요소(사운드, 조명 등)의 기즈모를 표시한다. 3.3 유니티의 인터페이스 51

3.3.6 하이어라키 뷰 하이어라키 뷰(Hierarchy View)는 씬 뷰에 설치된 모든 오브젝트를 관리하는 곳이다. 오브 젝트가 계층적으로 구성된 경우 오브젝트의 계층구조를 표시한다. 그림 3-41 하이어라키 뷰(Hierarchy View) 하이어라키 뷰에 있는 오브젝트를 더블클릭하면 그 오브젝트가 씬 뷰의 중앙에 나타나도 록 가상의 카메라가 조정된다. 그림 3-42 하이어라키의 오브젝트를 더블클릭하면 씬 뷰의 가운데에 표시된다. 3.3.7 프로젝트 뷰 프로젝트 뷰(Project View)는 게임에 사용되는 3D 오브젝트, 사운드, 그래픽 이미지, 프로 그램 스크립트 등의 각종 리소스를 관리하는 영역이다. 52 CHAPTER 03 유니티의 인터페이스

그림 3-43 프로젝트 뷰(Project View) 프로젝트 뷰는 실제로는 프로젝트의 Assets 폴더이므로 여기에 새로운 폴더를 만들거나 윈도우 탐색기에서 리소스를 복사해 넣을 수 있다. 그림 3-44 프로젝트 뷰는 유티니 프로젝트에 있는 Assets 폴더다. 3.3.8 인스펙터 인스펙터(Inspector)는 오브젝트와 리소스의 속성을 표시하고 변경하는 작업 영역이다. 여 기에서 속성을 변경하면 곧바로 씬 뷰와 게임 뷰에 반영된다. 게임이 실행하는 동안에도 인스펙터의 속성을 바꿀 수 있고, 그 결과가 게임에 반영된다. 그러나 게임 실행 중에 변경 한 내용은 게임이 끝나면 원래의 값으로 돌아간다. 예외적으로, 스크립트 소스를 수정하는 등 디스크에 기록된 내용은 게임이 끝나도 그 상태를 유지한다. 3.3 유니티의 인터페이스 53

그림 3-45 인스펙터(Inspector) 54 CHAPTER 03 유니티의 인터페이스

찾아보기 번호 2 by 3 36 2D 240 3D Graphics 15 3D Object 104, 240, 315 3ds Max 7 3차원 벡터 109 60분법 109 A Acceleration 252 Active 180 Algorithm 2 Alpha 523 Ambient Light 63 Android 303, 305 API 305 apk 307 Apple Pie 306 Application 226 Area Light 66 Asset 7 Assets 53 A star 243 Audio Clip 76 AudioListener 76, 280 AudioSource 76, 280 B BACK 298, 390 Background 180 Bake 249 Beast 11 Bezier 373, 420 Bitmap 14 Blender 15 Boo 9 Bouncy 74 Box 18, 572, 698 build 5, 300 Bullet 122 Bump Map 187 C C# 9 Cannon 107, 140 catch 440 Center 46 Child 146, 267 Cinema 4D 15 714 찾아보기

Click 175, 545 Clone 119 Collider 56-58, 77, 122, 138-141, 148, 448 Collision 80 Color 64 Component 7, 56 Compressed 234 Controller 484 Coroutine 215 Cross Hair 351 Cube 41 Cylinder 18, 356 D Damping 135, 486 Dead 95 Debug 153 Depth 508 Dialog 299 Diffuse 157 Directional Light 64 double 177 Down 212 Drag 116 Draw Mode 48 F Fanfare 514 float 177, 295 Focused 180 Format 180 FSM 515, 584 G Game 37 Game Manager 261 GameObject 41 General 38 Gizmo 43 Global 45 Graphics 14 Gravity 74 Ground 285 GUI 61, 165 GUI Skin 180 GUI Text 163, 319 GUI Texture 706 GUI 좌표계 61 Gun 101 E Edge 21 Edit 38 Enabled 299 enum 550 Esc 298 EulerAngles 109 Exception 691 External Tools 171 H Halo 65, 411 Hidden Line 16 Hierarchy 37 Hierarchy View 52 Highlight 595 Hit Point 448 Home 307 Horizontal 87 Hover 180 HP 204, 400, 415, 633 찾아보기 715

HTML 230 Human 11 I IEnumerator 215 Import 134 Input 86 Inspector 53 Instantiate 118 Intensity 64 Isometric 44 Is Trigger 122 J Main Color 266 Map 22, 534 Mapping 15, 22 Markup 230 Mass 116 Material 22, 68 Max size 234 Maya 7 Mecanim 11 Mesh 21, 138, 240 Mesh Collider 264 Mine 599 Mipmaps 50 Missile 605 Modeling 15 MonoDevelop 80 Javascript 9 Jet 화염 190 K Key Frame 527 L Laser 592, 626 Lathe Modeling 18 Light 63 Local 45 Loft Modeling 17 LookAt 145 Loop 162, 280, 365 Low Polygon 187 M N Navigation 249 new 83 Normal 22, 180, 572 Normal Map 199 null 685 NURBS 20 NVIDIA 8 O Object 14 Offset 61, 236, 269 Omni Light 23 OnGUI 167 Orthographic 24, 67 out 152 Overlap 514 Mac 3 MainCamera 197 716 찾아보기

P Package 128 Particle 7, 128 Patch 21 Patch Modeling 18 Path 17, 243 Performance 261 Perspective 24, 44, 67 Physic Material 74 PhysX 8 Pivot 46, 100 Platform 305 Point Light 23, 65 Position 57 Power 116 Prefab 107, 114, 131, 148 Presentation 299 Project View 36, 52 Properties 38 Property 56 Q Quaternion 109, 642 R Radius 250, 252 Raster 14 Ray 448 Raycast 149, 497, 631 Recursion 244 ref 152 Reference 152, 543 Rendering 15, 22 Render Mode 49 Resolution 299 Resources 156 return 215 RGB 44 Rich Text 230 Right View 101 Rigidbody 56, 58, 73 rimitive Modeling 18 Rotation 57, 109 S Scale 57 Scale Factor 262 Scene 37, 43, 578 Scene Gizmo 43 Scene 저장 81 Score 223 Screen 좌표계 60 Script 82 SDK 303 Second 295 SendMessage 210 Sensitivity 95 Shader 157, 241, 269, 615 Shading 22 Shadow 63 shield 690 Shield 627 Shuffling 547 Sketchup Pro 15 Skin 38 Skybox 136 Sleep 304 Snap 95 Solid Model 17 Spawn Point 114 Specular 199, 266 Specular Color 596 Speed 252 찾아보기 717

Sphere 18 Splash 300 Spotlight 23, 65 Standard Assets 128 StartCoutine 215 Surface Model 16 Surface Snap 48 Sync 171 Synchronization 668 T Tag 125 Text Color 180 Texture 22, 70, 185 Thread 383 Tiling 71, 91, 157 Tint 556 Toolbar 39 Top View 101 Touch 364, 545, 629 Touch Move 505 Transform 56, 57, 91 Translate 83 Transparent 157 Tree 244 true 175 True Color 180 try 440 Turret 107 Type 95 U Unicode 173 Unit 56 UNITY 3D 3 USB 307 uv Map 22 V Value 152 Vector 14, 62 Vector2 367 Vector3 62 Vertex 21, 58, 187 Vertex Snap 47 Vertical 87 View 35 View Mode 48 Viewport 163, 194 Viewport 좌표계 61 W Warp Zone 424 Water 509 Wireframe 16 World 좌표계 59 Y yield 215 ㄱ 가변 배열 535 가속 95 가장자리 469 감속 95 강도 276, 362 개발자 6 개발 환경 303 객체지향 4 검출 497 게임 매니저 166 게임 엔진 2 718 찾아보기

게임 오버 226, 292 게임 타이틀 671 경계선 469 경고 메시지 107 경과 시간 89, 295 경로 17, 243 계단 현상 14 계층 36 계층구조 52 공간 346 공간 좌표 25 관성 373, 420 구글 플레이 306 구급낭 400 구성 647 궤적 362, 603, 640 그라데이션 180 그래픽 14 그림자 63 글꼴 165, 296 글로벌 45 글로벌 좌표 45 금지 216 기뢰 599, 632, 656 기즈모 43 기호 534 길찾기 243 꼬리표 125 ㄴ 낙하 280 낙하지점 8 난수 176 넙스 20 높낮이 199 ㄷ 다운로드 186 다중 플랫폼 259 단말기 165, 304 달리기 465 데이터 압축 14 도움말 703 독립적 647 동기 668 동기화 313 둥근 사각형 696 드래그 505 득점 224 득점 표시 314 등록 577 디버깅 153, 308 디자인 43 ㄹ 라이선스 31 라이트 매핑 66 래스터 14 랜덤 202, 340, 382 레벨 92 레이드 모델링 18 레이저 592 레퍼런스 10 렌더링 11, 15 로그 153 로딩 300 로우 폴리곤 187 로컬 45 로컬 좌표 45, 84 로프트 모델링 17 리소스 7, 53, 127 리지드바디 58, 83 리턴 값 118 찾아보기 719

ㅁ 마우스 259, 367 마크 업 230 매개변수 493 매니저 521 매트리얼 69, 236 매핑 15, 91, 235, 362 맥 3 맵 534 멀티유스 5 멀티 플랫폼 3 메시 187 메시지 397 메시 콜라이더 264 메카님 11 모니터링 50 모듈 261, 517 모드 304 모바일 165 목적지 243, 615 목표물 392 몬스터 254 문자셋 169 문자열 230 물리 기반 엔진 8 물리엔진 74 미니맵 619, 696 미사일 205, 210 ㅂ 바닥 243 반복 162 반사광 266, 276, 595 배경 184 배경 음악 259 버텍스 스냅 47 버튼 166, 706 범위 112 벙커 144 베지어 373 벡터 14 보간법 74 보류 215 보모 188 보호막 690 복귀 254 분할 243 분해 477 뷰 35 블랙베리 6 비눗방울 184 비스트 11 비율 458 비주얼 스튜디오 170 비트맵 14 비행 궤도 8 비활성화 216, 222 빌드 5, 300 ㅅ 사운드 43, 76, 81 사정거리 149 상대좌표 91 상대좌표계 59 상승 382 상태 549 상하좌우 195 서식 230 서피스 모델 16 서피스 스냅 48 설정 293 성능 261 센서 338, 346, 505 센터 46 셀 237 720 찾아보기

셀 애니메이션 232 셔플링 547 속성 56, 180, 293, 316 손실 181 손자 146 솔리드 모델 17 수평 338 슈팅 게임 186 스레드 383 스카이박스 136 스코어 296 스크롤 192, 323 스크린 좌표 197 스크린 좌표계 60 스크립트 9, 117 스타일 230 스테이지 250, 514 스포트라이트 65 스플래시 300 슬라이드 420 승패 166 승패 판정 178 시뮬레이션 3 식별자 306 실수 177, 295 실탄 351 씬 43 씬 기즈모 43 ㅇ 아이소메트릭 44 아이템 633 안드로이드 3, 305 알고리즘 2, 4, 149, 620 알파 50 압축 180 애니메이션 162 애셋 7 애플리케이션 3 애플파이 306 앰비언트 라이트 64 엔터테인먼트 15 엠보싱 효과 187 연출 222, 620 열거형 550 예외처리문 440 오른손 좌표계 26 오버랩 514, 523 오브젝트 14, 41, 259 오일러 각도 109, 642 옵션 85 와이어프레임 16 왼손 좌표계 26, 71 우주선 641 운동학 74 운석 200 원근 44, 316 원샷원킬 648 월드 좌표 84 윈도우즈 3 유격 506 유니티 3 유닛 56 의존도 647 이득 211 이미지 181 이벤트 79, 175, 375 이벤트 함수 79 인스펙터 53 인터페이스 7 일련번호 547 입출력 공용 152 ㅈ 자동완성 80, 171 자식 146, 188 찾아보기 721

자원 7 작동 222 장식용 288 장애물 243 장전 364 재귀호출 244 저항 74 전구 65 전방 83, 362 전역 변수 98, 282 전투기 191 전투 모드 618 절대좌표계 60 절대 평면좌표 197 점수 619 점프 313 접촉 57 정수 177 정수 부분 194 정점 58, 187 정점 스냅 47 제거 222 제곱수 181 제어 292 제한 112, 195, 352 조각 243 조명 43, 63 조준선 459 조준점 351 좌표 188 좌표계 324 주기 523 중력 8, 73, 74 중력가속 338, 346 중력가속도 505 중력 효과 313 증손자 146 지속적 211 지역 변수 117 지연 215 지형 243 직선 392 질량 8, 74 집합 128 ㅊ 착지 313 참조 224 참조 전달 152, 543 처리 647 체력 400, 415 초기화 395 최댓값 177 최솟값 177 추락 382 추출 249 축 83 출력 전용 152 충돌 81, 280, 647 충돌 처리 221, 314, 500 충돌체 57 치환 231 ㅋ 카메라 43, 135 캐릭터 9, 41, 482 커서 395 컨트롤 42 컨트롤러 482 컨트롤 바 48 컴파일 5 컴포넌트 7, 56, 206 콘솔 543 콜라이더 57, 140, 148, 319 쿼터니언 109 키입력 634 키 프레임 372, 527 722 찾아보기

ㅌ 타이틀 571 타임라인 372, 420 탄성계수 8 탄피 351 탐색 151, 243, 335 탐지 392 태그 125, 200, 277 탱크 92 터치 506, 531 테스트 517 텍스처 70, 594 텍스트 230 통지 648 투명도 50, 523 툴바 39, 42 트리 244 ㅍ 파괴 222 파라미터 438 파티클 7, 128, 185 판정 647 팡파르 514 패치 21 패치 모델링 18 패키지 271, 305, 306 퍼스펙티브 44 펼친 그림 22 평균 진행 시간 89 평면 좌표 25 포물선 380 포신 91 포탑 91 폭파 불꽃 271 폴더 36, 82 폴리곤 19 표면 스냅 48 프레임 83, 151, 215, 237, 529 프로그레스바 400, 457, 458, 693 프로젝트 39 프로젝트 뷰 36, 52 프로퍼티 56 프리미티브 모델링 18 프리팹 107, 200, 208 플랫폼 5, 50 피격 450 피봇 46, 100 피부 57 ㅎ 하위 개체 191, 276 하이라이트 199, 276 하이어라키 뷰 52 한계값 239 함수 204 해상도 50 행성 623 헤일 65 헤일로 411 화톳불 432 확률 390 확장 243 활성화 373 회전 382 효과 222 효과음 258 휴먼 11 찾아보기 723