절대강좌! 유니티

Unity 전문 개발자가 알려주는 효과적인 게임 제작 기법

유니티 2018 버전과 더불어 한층 더 충실하게 보강된 내용으로 돌아온 '절대강좌! 유니티'

유니티는 현재 가장 각광받고 있는 게임 개발 엔진으로, 국내외를 막론하고 출시되는 많은 모바일 게임은 물론 비게임 분야인 VR/AR, 영화, 산업 전반에서 유니티를 도입하는 추세다. 이 책에서는 유니티의 최신 버전인 유니티 2018을 이용해 게임 개발에 필요한 기능을 먼저 학습한 후 진행하는 방식이 아닌, 게임을 만들어 나가면서 필요한 기능을 알아보고 직접 구현하는 방식으로 진행한다.

유니티 2018에서 변경된 내용에 맞춰 책의 소스코드를 개정했으며 적 캐릭터의 AI에 시야각 기능을 추가해 개선하고 인벤토리 UI의 구현 및 데이터 저장 기법까지 다루고 있어 더욱 완성도 높은 게임을 구현하는 데 크게 도움될 것이다.

독자는 이 책을 끝까지 읽고 따라 하다 보면 어느새 게임 개발에 필요한 각종 지식을 습득하게 될 것이다.

★ 이 책에서 다루는 내용 ★

  • 유니티 설치 및 인터페이스 소개
  • 게임 스테이지 제작
  • 레거시 애니메이션 및 메카님 애니메이션
  • 적 캐릭터(NPC)의 유한상태머신(FSM; Finite State Machine) 구현
  • 내비게이션 메쉬를 이용한 적 캐릭터 추적 기능
  • 현실적인 폭발 효과 및 Muzzle Flash 구현
  • 실시간 그림자와 모바일용 그림자 처리
  • 레이캐스트(Raycast)를 응용한 발사 처리
  • 능동적인 카메라 워킹 기법 소개
  • 새로운 GUI 시스템인 유니티 UI 소개 및 게임 인터페이스 구현
  • 게임매니저 및 오브젝트 풀 구현
  • 내비게이션 고급 기법(동적 장애물, Off Mesh Link) 소개
  • 라이트매핑 및 라이트 프로브 소개
  • 인벤토리 UI 구현 및 아이템의 드래그, 드롭 기능 구현
  • PlayerPrefs, 파일, ScriptableObject를 활용한 데이터 저장 기법 소개
  • Progressive 라이트매퍼를 이용한 라이트맵 및 라이트 프로브 소개

 

도서 상세 이미지

이재현

SI 업계에서 13년간 프리랜서 개발자로 주로 반도체 분야와 금융권에서 일하다가, 2008년 아이폰 게임 개발에 첫발을 내디뎠다. 이후 유니티로 전향해 1인 개발자로서 다수의 게임을 앱 스토어에 출시했다. 유니티 관련 자료가 거의 없던 2011년에 국내 최초로 유니티 동영상 강좌 사이트(http://www.Unity3dStudy.com)를 개설해 많은 유니티 입문자에게 무료 강좌를 제공해 왔다. 현재 유니티코리아의 공인 마스터즈 2기로 활동 중이며, 오프라인에서도 유니티 기초와 VR/AR 강좌를 진행한다. 또한 1인 개발자로서 좋은 게임을 개발하고자 노력하고 있다.

  • ▣ 01장: 유니티 게임 엔진의 소개
    • 통합 멀티미디어 엔진으로의 진화
    • 유니티의 장점
      • 멀티 플랫폼 지원
      • 통합 개발 환경(IDE)
      • 유니티 라이선스 정책
      • 정보 공유를 위한 커뮤니티 활성화
      • 애셋 스토어
    • 유니티로 만들어진 게임
    • 유니티 설치
      • 유니티 설치과정
      • 유니티 계정 생성 및 로그인
    • 유니티 에디터 소개
      • 유니티 에디터 구조
      • 툴 바 및 타이틀 바
      • 단축키 설정
    • 정리
    •  
  • ▣ 02장: 게임 개발 준비
    • 개발할 게임 소개 및 개발 순서
    • 새 프로젝트 생성
    • 유니티 에디터의 환경설정
    • 프로젝트 뷰의 체계적인 관리
    • 캐릭터모델 임포트하기
    • 애셋 스토어
    • 애셋 스토어에서 리소스 내려받기
    • 정리
    •  
  • ▣ 03장: 게임 스테이지 제작
    • 바닥 생성 및 배치
    • 텍스처
      • 텍스처 임포트
      • 텍스처의 해상도 조절
    • 머티리얼
      • 머티리얼 적용 방법
      • 타일링 속성
    • 셰이더 및 물리 기반 셰이딩
      • 렌더링 모드
      • 알베도
      • 메탈릭 속성
      • 노멀 맵
      • 하이트 맵
      • 오클루전
      • 이미션
      • 디테일 마스크
    • 프리팹
      • 벽 만들기
      • 프리팹 생성
      • 프리팹의 복제
      • 스내핑 기능
    • 조명
      • Directional Light
      • Point Light
      • Spot Light
      • Area Light
    • 하늘 표현 방식
      • 6방면 스카이박스
      • 프로시저럴 스카이박스
      • 큐브맵 스카이박스
    • 정리
    •  
  • ▣ 04장: 주인공 캐릭터 제작
    • 3D 모델 불러오기
    • 컴포넌트
    • 스크립트 생성
    • 키보드 입력값 받아들이기
      • InputManager
      • 스크립트 적용 방식
    • 캐릭터 이동 - Translate
      • 컴포넌트 캐시 처리
      • Private 변수의 Inspector 노출
      • 게임오브젝트의 이동 및 회전
      • Translate 함수
      • 정규화 벡터
      • 벡터의 덧셈연산
    • 캐릭터 회전 - Rotate
    • 카메라 추적 - SmoothFollow
    • 레거시 애니메이션
      • 애니메이션 클립
      • 애니메이션 적용
      • 애니메이션 컨트롤
      • 애니메이션 블렌딩
    • 무기 장착
    • 그림자
      • 실시간 그림자
      • Mesh를 이용한 그림자
    • Level Of Detail 설정
    • 정리
    •  
  • ▣ 05장: 총알 발사 로직
    • 총알 모델 준비
    • Rigidbody 컴포넌트
    • 물리엔진 속성 설정 - Physics Manager
    • Collider 컴포넌트
      • Box Collider
      • Sphere Collider
      • Capsule Collider
      • Mesh Collider
      • Wheel Collider
      • Terrain Collider
    • 충돌 감지 조건
    • 충돌 이벤트
    • Tag 활용
    • 총알 발사 로직
      • 총알의 발사 위치
      • 런 모드에서 수정한 속성
      • 기즈모의 활용
    • 총알 발사궤적 효과 만들기 - Trail Renderer
    • 파티클 활용하기
      • 탄피 효과내기
      • 총구 화염 효과 - Muzzle Flash
      • 스파크와 탄흔 효과
    • 드럼통의 폭발 효과
      • Scale Factor
      • Mesh Collider 활용
      • 드럼통의 외형 변형 - Mesh Filter
      • 텍스처의 변경하기 - Mesh Renderer
      • 폭발력 적용하기 - AddExplosionForce
    • 사운드
      • AudioListener, AudioSource 컴포넌트
      • 오디오 파일 임포트 및 설정
      • 오디오 임포트 옵션 - Load Type
      • 오디오 임포트 옵션 - Compression Format
      • 총소리 구현
      • 드럼통 폭발음 구현
    • 정리
    •  
  • ▣ 06장: 적 캐릭터 제작
    • 유한상태머신의 정의
    • 메카님
      • 적 캐릭터 3D 모델 임포트
      • 메카님 애니메이션으로 전환
      • 애니메이션 리타깃팅
      • 본 구조의 최적화 - 총 장착
    • 애니메이터 컨트롤러
      • 메카님 애니메이션 클립 설정
      • 스테이트 전이와 파라미터
      • 루트 모션
      • Root Transform Position (Y) 속성
      • Root Transform Position (XZ) 속성
      • Root Transform Rotation 속성
    • 내비게이션 - 적 캐릭터의 순찰 및 추적
      • 내비게이션 설정 및 베이크
      • NavMeshAgent 컴포넌트
    • 적 캐릭터의 순찰 기능
      • 순찰 지점 생성
      • 스크립트 컴파일과 어셈블리 정의 파일
      • 순찰 로직 구현
    • 유한상태머신 구현
      • 코루틴 함수
      • 적 캐릭터의 상태 체크
      • 적 캐릭터의 행동 처리
      • 애니메이션 동기화 - Blend Tree
      • NavMeshAgent의 회전 속도
    • 적 캐릭터의 공격 기능
      • Any State 와 Transition Duration
      • 자동 발사 기능 구현
      • 재장전 기능 구현 - 레이어 분리
      • 적 캐릭터의 총알 제작
      • 메쉬로 만드는 총구 화염 - Muzzle Flash
    • 적 캐릭터의 피격 및 혈흔 효과
      • Resources 폴더
      • Sub-State Machine
    • 정리
    •  
  • ▣ 07장: 주인공 캐릭터 피격 및 타격감 구현
    • 타격감 구현
      • 주인공을 따라가는 기능 - FollowCam
      • 셰이크 효과
    • 주인공 피격 및 피격 효과
      • 레이어 간의 충돌 감지
      • Is Trigger 속성
    • 애니메이션 속도 조절 및 오프셋 설정
    • 불규칙적인 순찰
    • 메시지 전달 - SendMessage
    • 사용자 정의 이벤트 - Delegate
    •  
  • ▣ 08장: 유니티 UI 시스템
    • Canvas 객체
      • EventSystem 객체
      • Canvas 컴포넌트
    • Rect Transform 컴포넌트
      • 앵커 프리셋
      • anchoredPosition 속성
      • 앵커 속성
    • Image 컴포넌트
      • Simple
      • Sliced
      • Tiled
      • Filed
    • RawImage 컴포넌트
    • Button 컴포넌트
      • Transition 속성
      • Navigation
      • Button Event
    • Text 컴포넌트
      • Text Effects
    • Bloody Screen 효과
    • 생명 게이지 구현
    • 탄창 정보 UI 및 재장전 로직 구현
      • 탄창 UI 디자인
    • 정리
    •  
  • ▣ 09장: 게임 매니저
    • 적 캐릭터의 출현 로직
      • 하이러키 뷰를 간결하게 유지하기
      • SpawnPointGroup 생성
      • 사용자 정의 기즈모
      • GameManager 객체 생성
    • 싱글턴 디자인 패턴
      • 오브젝트 풀
      • 이벤트 함수의 실행 순서
    • 정리
    •  
  • ▣ 10장: UI 고급
    • 적 캐릭터의 생명 게이지 구현
      • Screen Space - Camera 모드
    • 무기 교체 UI
      • UI 터치 이벤트 감지
    • 일시 정지 기능
      • Canvas Group
    • 인벤토리 UI
      • 인벤토리 UI 제작
      • Grid Layout Group 컴포넌트
      • 드래그 처리
      • 드롭 처리
    • 정리
    •  
  • ▣ 11장: 데이터 저장 및 불러오기
    • PlayerPrefs를 활용한 데이터 저장
    • 바이너리 파일 저장
      • 객체 직렬화(Object Serialization)
      • OnApplicationQuit
      • 아이템 추가 및 삭제
      • 인벤토리에 아이템 로드
    • ScriptableObject
    • 정리
    •  
  • ▣ 12장: 레이캐스트 활용
    • 레이캐스트
    • 총알 자동 발사 로직
    • 장애물 검출에 레이캐스트 응용
      • 장애물 설정
      • 주인공 캐릭터에 물리 엔진 적용
    • 적 캐릭터의 지능화된 AI
      • 원주의 점 좌표 계산
      • 유니티 Editor 클래스
      • 적 캐릭터의 시야각 구현
    • 카메라의 장애물 감지
      • 벽에 가려진 카메라의 높이 변경
      • 장애물에 가려진 카메라의 높이 변경
    • 정리
    •  
  • ▣ 13장: 내비게이션 고급 기법
    • 동적 장애물
    • Off Mesh Link Generation
    • 사용자 정의 Off Mesh Link
    • 정리
    •  
  • ▣ 14장: 라이트매핑 및 라이트 프로브
    • 전역 조명
    • 조명 모드
      • Realtime 모드
      • Mixed 모드
      • Baked 모드
    • 라이트매핑
      • Generate Lightmap UVs 옵션
      • Lightmap Static 플래그
      • 라이팅 뷰
      • Progressive 라이트매퍼
      • 라이팅 뷰의 Environment
      • Baked 라이트매핑
      • Auto Generate 옵션
      • 라이트맵 베이크
      • Area Light
    • 라이트 프로브
      • Light Probe Group
      • Anchor Override
    • 정리
    •  
  • ▣ 15장: 씬 관리
    • Scene 분리
    • Scene 병합
    • 씬 전환 시 Fade In 로직
    • 정리
    • 책을 마치며
  • 134쪽, 6번째 줄

    이 기능은 유니티에서 제공하는 스크립트를 사용한다. 메뉴에서 [Assets] → [Import Package] → [Utility]를 차례로 선택하거나 프로젝트 뷰에 마우스 커서를 이동시키고 마우스 오른쪽 버튼을 클릭하면 팝업된 컨텍스트 메뉴에서 [Import Package] → [Utility]를 선택한다.

    ==>

    유니티 허브를 이용해 유니티를 설치하면 메뉴에서 [Assets] → [Import Package]가 나오지 않을 수 있습니다. 이때는 에셋 스토어(Asset Store)에서 Standard Assets를 내려받고, 임포트한 후에 이후 과정은 책을 따라하면 됩니다.

  • 203쪽, 3번째 줄

    “Particles/Addictive”로 변경하면

    ==>

    “Particles/Additive”로 변경하면