책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/2d-unity-game)
요약
유니티와 C# 언어를 사용해서 2D 게임을 개발하는 방법을 알려준다. 유니티와 다른 게임 엔진 비교, 유니티 설치 방법, 에디터 기능 소개, 스프라이트, 캐릭터 애니메이션, 타일, 타일맵, 충돌 판정, 인벤토리, 디자인 패턴, 코루틴, 간단한 AI 등 다양한 주제를 다룬다. 그리고 예제를 통해 간단한 탑다운 방식의 2D RPG 게임을 만들어가는 과정을 보여준다. 특히 초보 게임 개발자에게 유용한 내용이 가득한 책으로 말미에는 초보 개발자가 참고할 만한 사이트도 함께 소개한다.
이 책의 대상 독자
유니티를 사용해서 비디오 게임을 만드는 데 관심이 있는 프로그래머를 대상으로 한다. 이 책을 통해 유니티 프로그램을 처음 접하는 것은 추천하지 않는다.
이 책에서 사용하는 프로그래밍 언어는 C#이다. 이 책에서 C# 언어의 기초를 다루지는 않지만, C# 언어의 문법은 널리 쓰이는 다른 프로그래밍 언어와 비슷하다. 자바 같은 언어에 익숙하다면 C# 문법도 자연스럽게 이해할 수 있을 것이다. C#과 관련된 설명은 게임을 만들면서 사용한 코드 예제와 함께 수록했다.
상세 이미지
목차
목차
- 1장. 게임과 게임 엔진
- 게임 엔진
- 집을 짓는 첫 번째 방법
- 집을 짓는 두 번째 방법
- 첫 번째 방법 평가
- 두 번째 방법 평가
- 결론
- 역사적인 게임 엔진
- 최신 게임 엔진
- 유니티 게임 엔진
- 요약
- 게임 엔진
- 2장. 유니티 소개
- 유니티 설치
- 유니티 설정
- 스크립트 에디터: 비주얼 스튜디오
- 유니티 인터페이스
- 각종 창 소개
- 레이아웃 설정과 변경
- 변환 도구
- 도구 핸들 포지션 토글
- 재생/일시정지/단계 버튼
- 유니티 프로젝트의 구조
- 유니티 문서
- 요약
- 3장. 기초 공사
- 게임 오브젝트: 컨테이너 엔티티
- 엔티티-컴포넌트 디자인
- 컴포넌트: 구성 요소
- 스프라이트
- 애니메이션
- 애니메이터 상태 머신
- 콜라이더
- 리지드바디 컴포넌트
- 태그와 레이어
- 태그
- 레이어
- 정렬 레이어
- 프리팹 소개
- 스크립트: 컴포넌트의 로직
- 상태와 애니메이션
- 상태 머신 심화 과정
- 애니메이션 파라미터
- 요약
- 4장. 게임 세계 구축
- 타일맵과 타일 팔레트
- 타일 팔레트 생성
- 타일 팔레트로 그리기
- 타일 팔레트
- 복수의 타일맵 사용
- 그래픽 설정
- 카메라
- 시네머신
- 시네머신 설치
- 시네머신 설치 후
- 가상 카메라
- 시네머신 제한자
- 안정화
- 머티리얼
- 콜라이더와 타일맵
- 타일맵 콜라이더 2D
- 복합 콜라이더
- 물리 모형 수정
- 요약
- 5장. 기본 지식 종합
- Character 클래스
- Player 클래스
- 프리팹 준비
- 동전 프리팹 생성
- 써클 콜라이더 2D 설정
- 태그 설정
- 레이어 기반 충돌 감지
- 트리거와 스크립트
- 스크립팅 가능한 오브젝트
- 스크립팅 가능한 오브젝트 생성
- Consumable 스크립트 작성
- 아이템 구성
- 플레이어 충돌
- 체력 아이템인 하트 생성
- 요약
- 6장. 체력과 인벤토리
- 체력 바 생성
- 캔버스
- UI 요소
- 체력 바 생성
- 앵커
- 앵커 포인트 수정
- UI 이미지 마스크
- 폰트 임포트
- 체력 텍스트 추가
- 체력 바 스크립트
- 스크립트 가능한 오브젝트인 HitPoints
- Character 스크립트 수정
- Player 스크립트 수정
- HealthBar 스크립트 작성
- 체력 바 컴포넌트 설정
- 인벤토리
- 인벤토리 슬롯 이미지 임포트
- 인벤토리 슬롯 설정
- Inventory 스크립트 생성
- 요약
- 체력 바 생성
- 7장. 캐릭터, 코루틴, 스폰 위치
- 게임 매니저 생성
- 싱글톤
- 싱글톤 생성
- 게임 매니저 프리팹 생성
- 스폰 위치
- 스폰 위치 프리팹
- 플레이어 스폰 위치 설정
- 플레이어 스폰
- 요약
- 적의 스폰 위치
- 카메라 매니저
- 카메라 매니저 사용
- Character 클래스 설계
- virtual 키워드
- Enemy 클래스
- 리팩토링
- internal 접근 제한자
- 코루틴
- 코루틴 호출
- 실행의 일시 정지 또는 “양보”
- 코루틴 완료
- 시간 간격을 두는 코루틴
- abstract 키워드
- Enemy 클래스 구현
- DamageCharacter() 메서드
- ResetCharacter()
- OnEnable()에서 ResetCharacter() 호출
- KillCharacter()
- Player 클래스 수정
- 프리팹을 인스턴스화 하는 코드의 리팩토링
- 재확인
- 작성한 코드 사용
- OnCollisionEnter2D
- OnCollisionExit2D
- Enemy 스크립트 설정
- 요약
- 8장. 인공 지능과 무기
- 배회 알고리즘
- 시작
- 배회 스크립트 작성
- 변수 추가
- Start() 메서드
- 배회 코루틴
- 새로운 목적지 선택
- 각도, 호도, 벡터
- 적 애니메이션
- Move() 코루틴
- Wander 스크립트 설정
- OnTriggerExit2D()
- 기즈모
- 정당방위
- 필요한 클래스
- Ammo 클래스
- 에셋 임포트
- 컴포넌트 추가, 레이어 설정
- 레이어 충돌 매트릭스 수정
- Ammo 스크립트 작성
- 잊기 전에 AmmoObject 프리팹 생성
- 오브젝트 풀링
- Weapon 클래스 작성
- 메서드 스텁
- SpawnAmmo 메서드
- Arc 클래스와 선형보간
- 화면 공간과 월드 공간
- FireAmmo 메서드
- Weapon 스크립트 설정
- 포물선 궤적
- 새총 발사 애니메이션
- 애니메이션과 블렌드 트리
- 블렌드 트리
- 애니메이터 정리
- 걷기용 블렌드 트리 생성
- 레이어 중첩
- 블렌드 타입
- 애니메이션 파라미터
- 파라미터 사용
- 설정의 이유
- 루프 시간
- 전환 생성
- MovementController 수정
- 새총 발사 스프라이트 임포트
- 애니메이션 클립 생성
- 발사용 블렌드 트리 생성
- 종료 시간
- Weapon 클래스 수정
- 변수 추가
- Start()
- Update() 수정
- 방향 결정
- 기울기 메서드
- 기울기 계산
- y 절편 비교
- HigherThanNegativeSlopeLine()
- GetQuadrant() 메서드
- UpdateState() 메서드
- 맞았을 때 깜빡이는 효과
- Player, Enemy 클래스 수정
- 기타 플랫폼용 빌드
- 게임 종료
- 요약
- 앞으로 할 일
- 커뮤니티
- 추가 학습
- 도움을 구할 곳
- 게임잼
- 새로운 소식과 기사
- 게임과 에셋
- 마치며
- 배회 알고리즘