Unity 5로 '유니티 2D 게임 공작소' 5장-메카님과 Physics 2D로 플레이어 캐릭터 만들기-따라하기.

* 키보드 화살표로 좌우 이동, 스페이스 키로 점프. 점프는 2단 점프가 가능.

16/2/1 월

* 빈 게임 오브젝트 생성, 'Player' 명명, 'Char' 레이어로 지정, Rigidbody2D 추가(Gravity Scale: 10, Fixed Angle: 체크). 'Player_Idle1.psd'를 프로젝트 창으로 임포트 한 뒤 Inspector 창에서 Pivot: Bottom으로 설정하고 'Player' 하위로 끌어놓고 'PlayerSprite'라 명명. PlayerSprite의 position X: -0.3, 레이어: 'Char', Sprite Renderer 중 Sorting Layer: 'Char'로 설정.

'ZeroFrictionP2DMat'(Friction: 0, Bounciness: 0), 'PlayerP2DMat'(Friction: 0.4, Bounciness: 0)란 이름의 Physic 2D Material 생성.
'Player' 하위에 빈 게임 오브젝트 생성, 'ColliderBody' 명명, 태그: 'PlayerBody', 레이어: 'Char'로 지정,
Box Collider 2D(몸 충돌판정용) Material: ZeroFrictionP2DMat, Circle Collider 2D(박스 하단과 연결된 원 충돌판정) Material: ZeroFrictionP2DMat, Circle Collider 2D(발 접지 판정용) Material: PlayerP2DMat 추가.

'Player' 하위에 빈 게임 오브젝트 3개 생성, 'GroundCheckC', 'GroundCheckL', 'GroundCheckR'이라 명명. 인스펙터 좌상단 아이콘 중 파란색 다이아몬드 선택하여 씬상에 표시. 3개의 위치를 원충돌체 하위에 나열.

프로젝트 창에 'Animations' 폴더 생성, 'PlayerAnimController'란 이름의 새 Animator Controller 생성.
'Player'에 Component-Miscellaneouns-Animator' 컨트롤러 추가. Controller: PlayerAnimController 적용. Apply Root Motion 체크 해제.
'Player-PlayerSprite' 선택 상태에서 Animation 창 열기. Create New Clip 선택, 'PlayerIdle'로 새 애니메이션 파일 생성. 프로젝트 창에서 'Player_Idle1.psd', 'Player_Idle2.psd', 'Player_Idle3.psd'를 드래그하여 Animation 뷰에 끌어놓으면 되어야 하는데 'Unable to create animatable Sprite Renderer component' 메시지가 뜨며 에러가 나 헤메다. 마침 책에도 해당 증상에대한 설명이 나와 있다. 유니티 혹은 컴을 재시작하면 해결되고 아니면 Animation 뷰 Add Curve > Player Sprite > Sprite Renderer > Sprite 우측 + 버튼 클릭하면 오류없이 드래그 가능하다는 설명. 한데 Unity 5의 경우 Add Curve가 아닌 Add Property이고 설명대로 해봐도 되지 않는다.(나중에 알았지만 + 버튼을 누르면 된다. + 버튼이 우측에 있는데 가려져 안보였기에 헤멘 것)

'PlayerMain.cs', 'BaseCharacterController.cs', 'PlayerController.cs' 소스 코드 따라 타이핑.
컴 재부팅. 재부팅해도 동일한 에러 발생 중.
Add Property > Player Sprite > Sprite Renderer > Sprite 우측 + 버튼 클릭하여 Sprite를 추가한 뒤 드래그 하니 된다. 프로퍼티를 추가하지 않고 하여 안되었었던 것.

'Player-PlayerSprite' 선택 상태에서 Animation 창 선택. Create New Clip 선택, 새 애니메이션 파일 생성. Add Property > Player Sprite > Sprite Renderer > Sprite 우측 + 버튼 클릭하여 Sprite를 추가, 프로젝트 창에서 해당 psd 파일들을 드래그하여 Animation 뷰에 끌어놓기 방식으로 PlayerIdle, PlayerWalk, PlayerRun, PlayerJump(Loop Time: 체크해제), PlayerDMG_A, PlayerDead(Loop Time: 체크해제) 애니메이션 파일 생성, 조정.

Animator 창에서 Parameters 탭 선택, 'Idle', 'Jump', 'Attack_A', 'Attack_B', 'DMG_A', 'Dead' Trigger 파라미터 생성, 'MovSpeed' Float 파라미터(값은 0.0) 생성.

PlayerIdle > PlayerWalk: MovSpeed/Greater/0.1, Exit Time:Off
PlayerWalk > PlayerIdle: MovSpeed/Less/0.1, Exit Time:Off
PlayerIdle > PlayerRun: MovSpeed/Greater/0.3, Exit Time:Off
PlayerRun > PlayerIdle: MovSpeed/Less/0.1, Exit Time:Off
PlayerWalk > PlayerRun: MovSpeed/Greater/0.3, Exit Time:Off
PlayerRun > PlayerWalk: MovSpeed/Less/0.3, Exit Time:Off
PlayerIdle > PlayerJump: Jump, Exit Time:Off
PlayerJump > PlayerIdle: Exit Time, 1.00, Exit Time:On
PlayerWalk > PlayerJump: Jump, Exit Time:Off
PlayerRun > PlayerJump: Jump, Exit Time:Off
Any State > PlayerDMG_A: DMG_A, Exit Time:Off
PlayerDMG_A > PlayerIdle: Exit Time, 1.00, Exit Time:On
Any State > PlayerDead: Dead, Exit Time:Off

'Player'에 'PlayerMain.cs', 'PlayerController.cs' 스크립트 드래그하여 추가.
널널, 걷기, 달리기, 점프, 죽기 구현.