각각의 입력과 회전에 따른 움직임을 함수로 처리하여 폰을 움직이도록 처리하였다. 키보드는 입력값이 일정해서 큰 오류가 없지만, 패드의 입력값은 float단위로 매우 민감하게 떨리게 처리되는 경우가 많아 range clamp 값으로 입력값을 안정되게 들어오도록 처리한 방식이다.
Camera Input - 해당 부분은 일반적인 카메라 움직임이 적용되었다.
Jump Action Input - 점프 입력이 들어왔을 때의 처리
Ragdoll과 Mantle등의 예외처리가 필요하다 보니 다른 부분보다 로직이 복잡하다.
지금 상태에서도 키보드 X버튼을 누르면 Ragdoll이 발동되긴 하지만, Skeletal Mesh의 정확한 렉돌 정보가 아직 들어오고 있지 않기 때문에 컴파일 에러가 발생하게 된다.
Mantle 체크와 Ragdoll 체크등은 스켈레탈 메시가 연결되고 나서 다시 한번 확인을 해볼 필요성이 있다.
Stance Action Input - 앉기 버튼에 따른 입력처리와 예외 처리 부분.
기본적으로 Movement Action에서 None 상태에서만 Crouch가 작동되도록 설정되어 있다.
Walk Action Input / Sprint Action Input : 인풋이 올 때 마다 모드가 변경되도록 처리.
ALS Gait 타입으로 된 변수 4개로 캐릭터의 행동을 Tick마다 계산하고 있기 때문에 각각의 Gait변수들의 특성을 알 필요가 있다.
Desired Gait
컨트롤러의 키 입력이 들어가면 즉시 변경되는 변수입니다.
예를 들어 Sprint 키인 Left Shift 키를 누르면 그 즉시 Desired Gait 변수는 Sprinting으로 변경됩니다.
Allowed Gait
여러 State(Stance, Rotation)에 따라 현재 Desired Gait를 허용할 지 판단합니다.
예를 들어 Crouch 상태에서 Sprint 키를 눌렀을 때 Desired Gait는 Sprinting이 됩니다. 하지만 Crouch 상태에서 Sprint를 하지 못하길 원한다면(최대 Running까지) Desired Gait는 Sprinting이지만 이를 허용하지 않고 Allowed Gait를 Running으로 설정합니다.
설정된 Allowed Gait에 따라 Character Movement Component의 Max Speed와 같은 값들을 변경합니다.
Actual Gait
Allowed Gait까지 설정 후 캐릭터의 물리적인 속도에 따라 실질적인 Gait를 설정합니다.
예를 들어 캐릭터가 Running 중에 Walking으로 변경 시 Allowed Gait는 Walking이 되었지만 실제 캐릭터 속도는 아직 Running의 속도이므로 Actual Gait는 Running입니다. 서서히 캐릭터 속도가 줄어들어 Walking의 속도가 됐을 때 Actual Gait도 Walking이 됩니다.
Gait
AnimBP에 전달되는 최종 ALS Gait 타입 변수입니다.
Allowed Gait, Actual Gait 변수는 Tick마다 새로 써주고 있는데 Actual Gait 변수가 변경 되었을 때만 Gait 변수에 Actual Gait를 그대로 설정합니다.