[ 2D Mario Clone - Ch02 ]
Part 4: Controller Setup
캐릭터에 Collision Box 조정, Audio 추가
여기 부터 Part13 까지는 [ CharacterController ] 클래스를 이용해서 주인공 캐릭터를 다루는 Script를 설명하고 있음
주인공 캐릭터를 복제 후 기존의 주인공 캐릭터를 똑 같이 만들어 봄
Component >> Physics >> CharacterController 추가
Height : Controller 크기 조정
Radius : Controller 넓이 조정
Center : Controller의 위치 조정
Slope Limit : Controller가 올라갈 수 있는 경사도
Component >> Audio >> Audio Source >> Audio Clip
Part 5: Controller Types
Character Controller 설명 및 추가
[05:13] SimpleMove 소스를 테스트
Transform.TransformDirection : 로컬 좌표계를 기준으로 월드 좌표계의 방향 단위 벡터를 만듬
그러나 여기서는 월드 좌표계와 로컬 좌표계가 같기 때문에 굳이 필요하지 않을 수 있음
<Source> playerControls0501
[07:21] Move 소스를 테스트 >> 이소스를 기본으로 사용
Input.GetAxis("Vertical") 받지 않도록 함
그래야 좌,우 입력만 받게 됨
Move의 인자로 moveDirection 사용하고 있으며, moveDirection은 매 프레임마다 gravity(중력)의 영향을 받고 있어 y축으로 영향을 받음
또한 isGround(캐릭터가 지면에 있는 경우)에도 입력값(Input.GetAxis())을 받아 moveDirection에 영향을 줌
<Source> playerControls0502
Input 설정 : Edit >> Project Settings >> Input
Part 6: Controller Move Jump
간단한 Jump / Walk 처리
[15:52] Basic Controller 처리
"!isGround" 처리 부분이 있는 경우와의 차이점
없는 경우에는 점프를 뛴 상태에서는 좌,우 키를 받지 않는다. 그러나, 있는 경우에는 점프를 뛴 상태에서도 가능함
<Source>playerControls0601
[18:84] 높은 점프 처리
GetButton : 버튼이 눌려져있는지를 계속 체크
GetButtonDown : 버튼이 눌렸는지 한번만 체크
<Source>playerControls0602
[ 2D Mario Clone - Ch03 ]
Part 7: Controller Code Prep
[25:40] 캐릭터가 여러 Input에 따라 처리해야할 속성들을 열거하고 그 상태에 따라 필요한 변수 생성
walkSpeed / runSpeed / fallSpeed / walkJump / crouchJump / gravity / startPos / moveDirection
<Source>playerControls0701
Part 8: Controller Idle, Walk, Run
[21:05] idle/walk/run상태에 따른 처리
idle 애니메이션 처리
캐릭터 방향 처리(with 애니메이션)
Walk / Run 처리(with 애니메이션)
<Source>playerControls0801
Part 9: Controller Crouch
[08:25] Crouch 처리
Crouch 점프의 애니메이션만 처리하고 있음
<Source>playerControls0901
Part 10: Controller Jump and Fall
[07:35] Crouch Jump 처리
여기까지 Stand Jump / Walk Jump / Run Jump / Crouch Jump 에 대한 처리를 함
[30:46][32:06][34:26][34:24] Jump 종류에 따라 Velocity.x 값을 조정해야 함(isGround 상태가 아닐때)
Jump의 종류에 따라 달려가는 속도의 차이를 보이도록 하고 있음
Input.GetButtonUp("Jump")의 추가로 Jump키가 눌렸다가 떨어지는 순간에 fallSpeed를 적용해서 영향을 받게 하고 있음
<Source> playerControls1001
Part 11: Controller Limit Jump Height
블락을 캐릭터 위에 만듬(충돌 체크 처리를 위해)
[02:44] Controller.collisionFlags >> CharacterController(Script Reference) >> CollsionFlags
[04:47] Controller.collisionFlags 처리
캐릭터 머리가 블락에 부딪혔는지 검사(CollisionFlags.Above)하고 있는지를 테스트
[06:06][09:49] 충돌 이후 처리
충돌이 일어나면 Controller.Move가 적당한 처리를 하지만, 여기서는 바로 fall이 되도록 하고 있음
<Sourece>playerControls1101
Part 12: Controller Jump Sound and Particle Effects
캐릭터 : 동작에 따른 사운드 및 파티클 생성
player(GameObject)에 Audio Source(Component)를 추가해야 함
Main Camera에 있는 Audio Source를 Enable하고 Play해 볼 것
[07:09] 사운드 관련 변수 생성 및 PlaySound 구현
AudioClip.length(Script Reference)
[08:06] public 변수 mario_jump에 사운드 추가
mario_jump - mario_noise_after_jump_on_enemy 사운드 추가
[09:52] PlaySound() 추가
C# 에서의 처리 - Coroutine & Yield
IEnumerator PlaySound( ...) {...}
StartCoroutine(PlaySound(...));
<Source>playerControls1201
[11:35] [13:49] public 변수 ParticleJump에 이펙트 추가
[line24/50] / 파티클 위치 설정[line107]
ParticleJump - Prefab_Particle_Smoke
[15:18][17:42] Particle 생성
<Source>playerControls1202
Part 13: Controller Code Conclusion
지금까지 배운 캐릭터 콘트롤 결론
전체적으로 지금까지 한소스(playerControls)를 볼 수 있음
[ Source Page02 ]