실행화면 스냅샷.

Unity 5.2.0f3로 'Unity 5.x by example' 5, 6장 2D 어드벤쳐 따라하기.

조작법:
WASD, 화살표키로 주인공 조종,
스페이스키로 주인공 점프.
3개의 화면으로 구성되어 있고 좌측 화면에서 NPC로 부터 스톤을 찾아달란 퀘스트를 받은 뒤 우측 화면으로 이동하면 스톤이 2층에 보이고 스톤을 얻은 뒤 다시 NPC에게 가면 고맙단 인사를 듣는다.

* 현재는 NPC의 대사가 화면에따라 어긋나 보이는 버그가 있다.
* 각 화면으로 이동시 나가는 곳과 들어오는 곳이 일치되지 않는다.

4/2 일
Unity 5로 'Unity 5.x by example' 5장 2D 어드벤쳐 따라하기.
* 프로젝트 생성시 AssetPackages를 클릭한 뒤 2D, Characters, CrossPlatformInput, ParticleSystems에 체크한 뒤 생성하여 라이브러리 임포트하기.
* Texture들 임포트하고 Texture Type: Sprite(2D and UI)로 설정, Generate Mip Maps 옵션 체크 해제.
* Game 탭에서 1024*600 해상도로 새로 만들기.
* 메인카메라 선택, Projection: Orthographic, Size: 3(화면높이 / 2/ 픽셀 대 월드: 600/2/100 = 3)으로 설정.
* Hierarchy로 전경, 배경 끌어넣고 전경의 Order in Layer: 1로 설정해 배경의 앞에 보이게 하기.
* 메인카메라를 선택한 뒤 메뉴의 Component-Image Effects 중 Bloom Optimized, Noise And Grain 효과 추가하여 화면 효과 조정.
* 테스트 용으로 3D 캡슐을 만들고 Circle Collider 2D, Rigidbody 2D 추가.
* 전경에 Edge Collider 2D를 5개 추가하고 Edit Collider 버튼을 클릭한 뒤 라인들을 이동시키고 점을 추가하고 하여 지형에 맞게 편집하기.
* 주인공 용 텍스쳐의 Sprite Mode: Multiple로 변경, Apply. Sprite Editor에 들어가 좌상단 Slice 클릭, Automatic, Center, Delete Existing 선택한 뒤 Slice 클릭하여 부품별로 분리시키고 각 조각들의 회전 중심점을 잡아준 뒤 창을 닫고 Apply.
Hierarchy에 빈 게임오브젝트 생성, 'Player'라 명명, Player 태그 설정한 뒤 분해한 부품들을 자식으로 끌어넣기. 위치를 맞추고 팔과 다리는 한 개씩 더 복사한 뒤 Sorting Layer를 머리: 107, 몸: 105, 팔(위): 106, 팔(아래): 100, 다리(위): 104, 다리(아래): 103으로 정해준다.
* 주인공에 Circle Collider 2D(바닥과의 접촉용), Box Collider 2D(충돌 체크용), Rigidbody 2D(Linear Drag: 3, Gravity Scale: 3, Collision Detection: Continuous, Freeze Rotation: check) 추가.
Project 패널에서 Physics2D Material 새로 생성, 'LowFriction'이라 명명, Friction: 0.1로 변경한 뒤 Player의 Circle Collider 2D-Material에 드래그해 넣기.
* 프로젝트 생성시 추가한 CrossplatformInput을 이용하기 위해 Assets-Standard Assets-CrossPlatformInput-Prefabs 폴더에서 MobileTiltControlRig.prefab을 Hierarchy에 끌어넣기.
* 주인공의 이동과 점프를 담당하는 PlayerControl.cs를 새로 생성, Player에 추가. 'Ground'란 새 레이어 만들고 전경의 레이어에 적용. Player-PlayerController 중 Ground Layer: Ground, Leg Collider: Player(Circle Collider) 적용.
주인공 프리팹으로 만들기.
* 최적화 팁: 드로우콜(Draw Call)을 줄이기 위해 관련 텍스쳐들 패키징 하기: 플레이어, 건물, 발판, 보석을 선택한 뒤 Inspector창에서 Packig Tag: Props를 입력, Apply. 배경들도 같은 방식으로 Background란 패킹 태그를 할당한다.
메뉴의 Window-Sprite Packer를 눌러 패키징 된 모습을 볼 수 있다.
5장 2D 어드벤쳐 따라하기 완료.

2017/4/4 화(예보 -1/21)
Unity 5로 'Unity 5.x by example' 6장 2D 어드벤쳐 2부 따라하기.
* 발판 텍스트 Hierarchy에 추가시키고 'ground' 태그 적용, BoxCollider 2D 추가, 현 위치에서 지정한 위치 사이를 왕복하게 하는 'PingpongMotion.cs'란 코드 작성하여 추가. 프리팹으로 만들기.
* 빈 게임오브젝트 생성, 'KillZone'으로 명명, Box Collider 2D(Is Trigger: On) 추가, 태그명이 'Player'이고 주인공 인스턴스가 있으면 머무르는 동안 지정한 만큼씩 체력 감소 시키기. 프리팹으로 만들기.
* GameObject-UI-Canvas, Image들로 주인공 체력 게이지 만들기.'HealthBar.cs'를 추가한 뒤 프리팹화하기.
* 포탑(큐브)과 포탄(파티클) 만들기. 'Ammo.cs', 'Mover.cs', 'CollideDestroy.cs'를 포탄 프리팹에 추가, 'AmmoSpawner.cs'를 포탑 프리팹에 추가.
* NPC와 퀘스트 시스템 만들기: 주인공 프리팹을 추가하고 컴포넌트들 제거하고 Box Collider 2D를 추가하고 색깔바꾼 뒤 사용. 퀘스트를 주고 임무 완료 여부에 따라 대화 내용 바꾸기 처리를 한 'QuestGiver.cs' 만들어 추가.
빈 게임오브젝트 생성, 'QuestManager'로 명명, 'QuestManager.cs'로 전체 퀘스트 관리.
* 보석 텍스쳐에 CircleCollider 2D 추가, 'QuestItem.cs' 추가하여 퀘스트 받기전엔 비활성화 시켰다가 퀘스트를 받으면 활성화시키고 주인공이 획득하면 해당 퀘스트 완료로 전환, NPC에게 갔을 경우 퀘스트 완료 텍스트 표시하게 하기.
* 책에는 스테이지 간 이동 처리가 빠져있기에 빈 게임 오브젝트 생성, 'ChangeStage'라 명명하고 BoxCollider2D를 추가하고 'ChangeStage.cs'를 추가하여 인스펙터창에서 적어 둔 스테이지로 이동하게 처리.
6장 2D 어드벤쳐 2부 따라하기 완료.

17/4/03 월