실행화면 스냅샷.

Unity 5.2.0f3로 'Unity 5.x by example' 7,8장 인공지능 따라하기.

조작법:
WASD, 화살표키로 주인공 조종,
스페이스키로 주인공 점프.
적 캐릭터의 경우 기본적으로는 순찰을 하다가 주인공이 시야에 들어오면 쫓아와 공격을 하곤 원래의 순찰로 돌아간다.

* 현재는 주인공을 쫓아와 한번 부딪히고 나면 다시 순찰로 자동으로 돌아가버리는 문제가 있다. 적 캐릭터에 Rigidbody, CapsuleCollider를 추가하자 어느정도 해결됐다. 한데 이번엔 주인공을 한 번 발견하고 난 뒤엔 시야에서 놓쳐도 순찰로 돌아가지 않게 됐다.

4/4 화
Unity 5로 'Unity 5.x by example' 7장 인공지능 따라하기.
새 프로젝트 만들고 지형을 만들다 보니 엄청나게 용량을 잡아먹어 C드라이브가 용량 부족이 되었다.
C:\Users\Administrator\AppData\LocalLow\Unity\Caches\GiCache의 용량이 약 5G에 육박하기에 지우니 다시 용량에 여유가 생겼다. Terrain 작업에 용량이 많이 들어가는 듯.
* 만든 지형을 선택하고 인스펙터 창에서 좌상의 Static 체크. Navigation창에서 Bake하여 기본 내비게이션 매시 생성, Agent Radius, Agent Height, Max Slope등의 수치 변경해 적용지역 적절히 조정하기.
* Ethan 캐릭터를 추가하고 Component-Navigation-Nav Mesh Agent 추가.
목적지를 만들기 위해 빈 게임오브젝트 생성, 'Destination'이라 명명. 적당한 위치로 옮겨두고 아이콘으로 표시.
Ethan이 Destination이 있는 쪽으로 쫓아가게 'FollowDestination.cs' 코드를 만들어 추가.
Destination을 선택한 뒤 Animation창을 선택하고 Create 버튼을 눌러 'animDestPatrol'이란 이름으로 anim 파일 생성.Add Property 버튼 클릭, Transform-Position으로 새 Position채널 추가하고 시작과 끝 사이에 빨간색 수직 타임슬라이더를 이동시키고 Destination의 위치를 변경시키기. Curves 버튼 클릭, 모든 포인트 선택한 뒤 RightTangent-Constant를 선택, 모든 연결을 직선화시키기.
Animator창에서 animDestPatrol을 선택하고 Speed를 0.04로 변경해 애니메이션 속도를 늦춘다.
게임을 실행하면 Ethan이 시간에 따라 위치를 바꾸는 Destination을 따라 이동하여 순찰하는 형태의 애니메이션이 된다.
7장 인공지능 따라하기 완료.

4/5 수
Unity 5로 'Unity 5.x by example' 8장 인공지능 완성하기 따라하기.
* 적 프리팹의 눈 위치에 빈 게임오브젝트 생성, 'EyePoint'라 명명, 적 시야 한계로 사용할 SphereCollider(IsTrigger: On) 추가. 주인공이 시야 내에 있는지 여부를 판단하는 LineSight.cs(Can See Target: On, Eye Point에 만든 EyePoint 트랜스폼 드래그) 작성하여 추가. 주인공 캐릭터 'Player' 태그 적용.
* 적의 상태(순찰/추적/공격) FSM을 처리하는 AIEnemy.cs를 작성, 적 캐릭터에 추가하고 이전 추가했던 FollowDestination.cs를 비활성화하기. 이전 만들었던 Destination에 'Destination' 태그 붙이기.
실행하면 주인공을 향해 다가와선 멈추고 'StackOverflow Exception' 에러가 난다. 원 코드와 비교해보니 AIAttack()함수의 끝부분에 yield break;를 빼먹어서 생긴 문제였던 듯 하다.
8장 인공지능 완성하기 따라하기 완료.

17/4/05 수