획득한 열쇠들 디스플레이, 스위치 작동하여 떨어지는 바닥(우상) 생성하기.

Unity 5로 '유니티2D 게임 공작소' 11장 Scene뷰를 활용하여 레벨 디자인 하기 따라하기.

7/9 토
* 열쇠로 문 열기.
- 열쇠 작성하기. PlayerController.cs, PlayerBodyCollider.cs 수정.
열쇠로 열리는 문 작성하기, PlayerBodyCollider.cs 수정.
StageObj_KeyDoor.cs 새로 작성.
열쇠 A를 먹어도 먹은걸로 표시가 안되는 버그. 아무래도 StageObj_KeyDoor.cs 컴포넌트 중 KeySprite를 넣은게 문제인듯.
열쇠 A를 먹어도 먹은걸로 표시가 안되는 버그가 계속.
SubCamera 밑의 열쇠A 스프라이트를 지우고 새로 넣으니 해결됐다.
StageA_SubCamera를 Prefab으로 만들어 버리고 StageB_KeyDoor_A, B 역시 Prefab화하여 대부분의 버그를 잡다.
또 열쇠 A를 먹어도 먹은걸로 표시가 안되는 버그가 발생. 미치겠다.

* 물리엔진을 사용한 퍼즐(통나무 넘어뜨리기, 통나무 시소) 따라하기.

* 이동하는 바닥 따라하기.
이동할 바닥에 Rigidbody2D 적용(Is Kinematic: On),
StageObj_MoveBlock.cs 새로 작성하여 이동할 바닥에 적용.
BaseCharacterController.cs 내용 추가.

7/10 일
Unity 5로 '유니티2D 게임 공작소' 11장 Scene뷰를 활용하여 레벨 디자인 하기 중 통나무를 밀어 감춰진 문 나오게 하기.

* 체인으로 연결된 두개의 박스
Rigidbody2D, Hinge Joint 2D 적용하여 두 박스를 체인으로 연결하기 따라하기. 일단 연결은 했는데 체인들이 몽땅 서로 엉켜버리는 버그.
* PhysicETC 레이어 만들고 Edit-Project Settings-Physics2D를 눌러 열리는 Physics2DSettings 탭에서 UI, PhysicETC 말고 다른 레이어와는 모두 체크 해제하여 PhysicETC끼리만 충돌하게 처리한 레이어 만들기. 나중에 박스간 연결한 체인들의 레이어로 지정하여 주인공이 체인 사이를 지나갈 수 있게 처리하기.
제대로 연결한 것 같은데 엉망으로 작동하는 Hinge Joint 2D.

* 추락하는 바닥 만들기.
Stage_Trigger_EventObj.cs 새로 작성. 공중에 떠있는 바닥에 적용하고 Tag를 'EventTrigger'로 적용해야 하는데 이렇게 할 경우 EventTrigger 들을 모아 이동 가능 지점을 넣어두는 체계가 꼬여 에러가 나 이동이 불가능해진다.
이동하는 것들의 Tag를 'JumpTrigger'로 변경해 주니 EventTrigger의 밟으면 추락하여 지정 시간 이후 사라지는 것이 제대로 실행되지만 이번엔 이동들이 제대로 안되고 있다. 다른 스테이지로의 이동은 잘 작동하지만 동일 스테이지에서의 이동이 먹통이 되었다.
PlayerController.cs 중 ActionEtc()함수의 if(other.tag == "EventTrigger")를 if(other.tag == "JumpTrigger")로 바꿔주니 제대로 작동한다.
스테이지 1,2의 EventTrigger Tag들을 JumpTrigger로 변경해 주다. 이제 이동도 추락하는 발판도 다 제대로 잘 작동된다.

* 수리검 3개 던지는 적 보스 제작:
- EnemyC.prefab을 꺼내 GameObject-Break Prefab Instance를 선택 프리팹이 아닌 일반 게임오브젝트로 변형하고 x,y 스케일을 각각 3으로 늘려 크기 키우기, EnemyC_Boss로 이름 변경.
- EnemyC_Shuriken.prefab을 꺼내 역시 일반 게임오브젝트로 변형하고 크기를 3배로 키운 뒤 복제하여 3개로 만들고 FireBullet.cs Angle을 각각 0, -50, 50으로 변경한 뒤 다시 프리팹화한다.
EnemyC_Boss-Enemy Controller-Fire Object List-Size: 3으로 변경하고 Element0~2에 크기 3배로 키우고 각도 바꾼 프리팹들을 드래그하여 넣어준다.
책에선 날뛰면서 수리검을 날리면 너무 강해진다며 Ai If AttackOnSight를 100으로 지정, 움직이지 않고 수리검만 날리게 처리하라 권하고 있다.

7/28 목
- 이전 작업한 내용 중 KeyDoor에 열쇠를 가지고 도착하면 바로 문이 열리는 것이 아니라 화살표를 위로 향했을 때 열리게 하려고 고전중. PlayerBodyCollider.cs의 OnTriggerEnter2D(Collider2D col)내의 }else if (col.tag == "KeyDoor") { 처리를 주석처리하고 대신 PlayerController.cs의 ActionEtc() 함수에 }else if (other.tag == "KeyDoor") { 처리를 삽입하여 해결하려 했으나 먹통이다.
문제는 KeyDoor의 Box Collider 2D 크기가 너무 작게 설정되어 있어서 생긴 문제였다. 스테이지 1, 2의 KeyDoor들도 처리.

* 스위치 조작시 특정 게임 오브젝트 생성하거나 파괴하기 따라하기.
StageObj_Switch.cs 새로 생성하고 따라 타이핑. PlayerController.cs에 스위치 관련 내용 추가.
스위치 그래픽 조합하여 만들고 StageObj_Switch.cs 적용하기.
스위치 바디에 Box Collider 2D 적용하고 레버의 회전 중심점 변경.
작동시 무너지는 발판 3개가 생성되는 스위치와 적 2명이 생성되는 스위치 만들어 넣고 테스트, 성공. 스위치 관련 테스트.

16/7/28 일