Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 따라하기.

18/10/22 월

2018/10/4 목
Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 2장 분위기 조성 중 시작화면 따라하기.
UI-Panel 생성, Canvas의 Render Mode: Screen Space-Overay, Ui Scale Mode: Scale with Screen Size로 설정.
Panel의 자식으로 Button 생성, Text를 'Start Game'으로 변경.
빈 게임오브젝트 생성, 'GameMaster'라 명명, 버튼 클릭시 씬 전환하게 하는 코드가 담긴 'GameMaster.cs' 생성하여 추가.
Button의 OnClick()에서 + 버튼 클릭한 뒤 GameMaster, GameMaster.StartGame 선택하여 버튼 클릭시 GameMaster.cs 내의 StartGame() 함수 실행되게 처리.

* 씬 전환시 라이트가 꺼져 어두워지는 현상 해결법:
메뉴-Window-Lighting 클릭, Lightmaps 탭으로 이동, 하단 Auto 체크 해제 뒤 Build 클릭.

Terrain(Settings에서 Terrain Width: 50, Terrain Length: 50으로 설정해 작은 지형 생성)과 이전 게임의 코코넛 던지기 천막을 갖다 붙여 기본 환경 만들기.

****************************************************
2018/10/7 일
Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 3장 캐릭터 디자인 따라하기. 'BaseCharacter.cs', 'CharacterCtrl.cs', 'IKHandle.cs' 작성.
이 책은 소스 코드만 제공할 뿐 Asset들은 제공하지 않기에 따라하기 까다롭다. 번역도 지랄맞은데.
****************************************************
2018/10/9 화
Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 4장 플레이어 캐릭터와 비플레이어 캐릭터 디자인 따라하기.
'CharaCustom.cs' 코드 따라 치기.
UI를 만드는 방법들에대해서는 설명이 없어 그냥 시도를 해보다.
Toggle의 경우 여러개의 선택 사항을 넣는 방법이 궁금하다.
이 책은 너무 대충 설명되어있고 사진들도 흑백이라 형태가 잘 구분되어지지 않는 것도 문제. 하여간 문제 투성이의 책.

* 여러개의 토글 묶는 법:
Canvas 아래에 Panel 생성, Panel에 Component-UI-Toggle Group 선택하여 Toggle Group 컴포넌트 추가. Panel 자식으로 UI-Toggle 추가한 뒤 Ctrl-D로 원하는 수만큼 복제, Toggle-Label에서 각자의 이름 바꿔주기. 각 Toggle의 Group에 Toggle Group 컴포넌트가 추가된 Panel을 넣어주면 하나로 묶여서 여러 토글 중 1개를 선택하는게 가능하게 된다.
책에 나온 UI대로 따라하기 완료.

****************************************************
2018/10/20 토
Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 4장 플레이어 캐릭터와 비플레이어 캐릭터 디자인 따라하기.
기존에 만들었던 T맨과 드롭맨 FBX 모델을 각각 불러들이고 주인공 캐릭터 Animator 창 세팅.

* 걷기와 달리기 애니메이션의 블랜드 트리로 만들기:
걷기와 달리기는 상태창에 마우스 우클릭, Create New BlendTree in State 선택하고 인스펙터 창의 Motion-Blend Tree를 더블클릭하여 들어간다. + 눌러 Add Motion Field 3개 추가하고 위에서부터 왼쪽 회전, 직진, 오른쪽 회전 애니메이션을 각각 넣어주고 Threshold는 -1, 0, 1로 정해준다.

주인공 이동시 중력의 영향을 안받아 헤멨는데 Animator 컴포넌트와 Rigidbody, Capshule Collider 컴포넌트를 같은 층위에 두어야 하는 거였다. Rigidbody의 Constraints-Freeze Rotation x/y/z은 모두 체크해 두어야 한다. 점프가 좀 어색하지만 이동과 공격 등은 잘 된다.

주인공을 따라가는 카메라가 주인공의 등뒤에서 따라가는게 아닌 방향이 고정되어 있어 보기 별로 안좋다.

적 캐릭터에 Animator, Rigidbody, Capsule Collider(몸과 충돌테스팅용), Sphere Collider(주인공이 주변에 있는지 확인용), Nav Mesh Agent(주인공 등의 경로 추적용), Audio Source 컴포넌트 추가하고 나니 시작하자마자 주인공이 몇천미터 하늘 높이 날아가 버리기에 왜 그런가 했더니 Sphere Collider를 Is Trigger 체크를 안했기에 생긴 문제였다.

* 적 이동 준비(애니메이터 Root Motion 기반 이동):
적의 Animator Controller 생성하고 Float 변수 Speed, AngularSpeed, Bool 변수 Attack, AttackWeight, PlayerInSight, Trigger 변수 Die 추가.

Create State-From New Blend Tree로 새 State 생성, 'EnemyLocomotion'이라 명명. 더블클릭하여 들어간 뒤 Blend Type: 2D Freeform Cartesian, Parmeters: AnaularSpeed, Speed로 설정한 뒤 + 버튼 눌러 Add Motion Field로 7개를 새로 만든 뒤 아이들, 걷기, 좌로 걷기, 우로 걷기, 달리기, 좌로 달리기, 우로 달리기 애니메이션 클립들을 추가.
Compute Positions 드롭창을 누르고 Speed And Angular Speed를 선택하면 자동으로 애니메이션 파일의 위치들을 정렬해 준다.

* 적 공격처리 준비:
Project 창에서 Avatar Mask 생성, 'EnemyAttack'이라 명명한 뒤 Humanoid 클릭하여 열고 상반신 부분만 녹색으로 선택한다.
레이어를 하나 추가, 'AttackLayer'라 명명, Weight: 1, Mask: EnemyAttack, Blending: Override, Sync: off, IK Pass: On으로 설정.
Create State-Empty로 빈 상태 생성, 'New State' 상태로 두기. 공격용 애니메이션을 추가하고 'Attack1'이라 명명. Attack 변수가 true일 때 공격 애니 실행되게 처리.
'EnemyMov.cs' 새로 생성, 코드 따라치고 Enemy1에 추가.

주인공이 적의 시야각에 들어오면 추적해 오고 거리가 가까워지면 공격하는 처리 테스트 성공. 다시 테스트해보니 지금은 시야각과 상관없이 적의 구형 트리거내에 들어오면 무조건 추적을 시작하는 것으로 보인다.
'PC.cs', 'PlayerAgent.cs' 작성하여 주인공에 추가.

****************************************************
2018/10/21 일
Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 5장 게임 마스터와 게임 메카닉 따라하기.
'MainMenu' 씬의 기존 만들어 뒀던 Canvas의 자식으로 ButtonSettings 버튼, Canvas, Panel, Text 2개, Slider를 만들고 설정, 위치 조정.
'UICtrl.cs' 새로 생성, Canvas에 추가하고 SettingsCanvas, CtrlMainVolume 변수에 각각 새로 만든 캔버스와 슬라이더를 드래그해 적용.
'GameMaster.cs'에 내용 추가.
한데 Unity 5.2엔 UnityEngine.ScenManagement 라이브러리가 없어 5.2에 맞게 코드들을 수정하다.
기존 'GameMaster.cs'에 추가한 내용을 분리하여 각각 'LevelCtrl.cs', 'AudioCtrl.cs'로 분리해내고 정리.

Unity 5.2로 '유니티 3D RPG 게임은 이렇게 만든다' 6장 인벤토리 시스템 따라하기. 계속 따라하곤 있지만 new()로 생성하는게 안되고 있어 제대로 실행되지 않고 있는데 5.2 버전 탓인지 에러인지 모르겠다.

****************************************************
2018/10/22 월
유니티의 애니메이터, 애니메이션 테스트. Curves는 모델에 딸린 애니에이션에만 추가를 할 수 있다. 8:05

Flash MX로 게임의 HUD에 쓸 주인공 얼굴 원형 그림, 체력바, 마나바, 아이템 박스, 아이템들 제작.

* 적 머리위에 따라다니는 Canvas, Panel 부착 테스트.