* 빈 게임 오브젝트 생성, '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' 스크립트 드래그하여 추가.
널널, 걷기, 달리기, 점프, 죽기 구현.
|