반응형

캐릭터의 최종 움직임을 결정하게 될 Tick 그래프 부분입니다. 해당 이벤트의 정보가 Anim Instance쪽과 끊임없이 통신하면서 가장 적절한 모션을 뿌려주고, 캐릭터의 무브먼트를 설정하게 되는 가장 중요한 로직이 이루어지는 곳이다.

 

  • Set Essential Values : 아래 펼쳐서 확인
    • 캐릭터의 tick 단위 이동처리에 있어 필수적으로 필요한 values들을 처리하는 함수.
  • 더보기
    Set the amount of Acceleration : 현재 속도와 이전 속도를 비교하여 가속도를 계산. 이동 구성 요소에서 반환된 현재 가속도는 입력 가속도와 동일하며 캐릭터의 실제 물리적 가속도를 나태내진 않는다.

    • Last Velocity Rotation : 속도를 측정하여 캐릭터가 움직이는지 확인함. 속도는 수평(XY)속도의 길이와 동일하므로 수직 이동을 고려하진 않음. 캐릭터가 움직이는 경우 마지막 속도회전을 업데이트합니다. 캐릭터가 멈춘 후에도 이동 방향을 아는것이 필요하여 값을 저장합니다.
    • Last Movement Input Rotation : 캐릭터의 이동 입력량을 구하여 캐릭터에 이동 입력이 있는지 확인함. 이동 입력량은 현재 가속도를 최대 가속도로 나눈 값과 같으므로 범위는 0~1입니다. 1은 가능한 최대 입력량이고 0은 없음. 캐릭터에 이동 입력이 있는 경우 마지막 이동 입력 회전을 업데이트 함.
    • Aim Yaw Rate : 현재 혹은 이전의 Aim Yaw값을 Delta Seconds 로 나누어 비교하여 Aim Yaw 속도를 설정합니다. 카메라가 왼쪽에서 오른쪽으로 회전하는 속도를 나타냅니다.

     

     

 
 
 

  • Cache Values : 다음 프레임의 계산에 사용할 특정 값을 캐시함.

 

  • Draw Debug Shapes : 아래 펼쳐서 확인.
    • 캐릭터의 움직임을 디버그할 수 있도록 뿌려주는 디버그 비주얼라이징 처리.
    • 디버깅은 실제 코어 움직임을 예측해서 뿌려주도록 계산하여 적절하게 잘 표시해주는 것이 포인트이다.
더보기

 

 

 

 
 

  • Do While On Ground // Update Character Movement : 아래를 펼쳐서 확인
    • 그라운드의 움직임의 회전을 제외하고 처리하는 부분. 실제적으로 가장 중요한 땅의 수직 움직임을 처리하는 부분이다.
더보기

 

  • Update Character Movement : 이전 페이지에서 설명했던 각각의 Gait 변수의 특성을 파악하고 적절하게 변수를 뿌려주는 것이 매우 중요하므로 다시 한번 설명한다.
  • Desired Gait
    • 컨트롤러의 키 입력시 즉시 변경되는 변수.
    • 예를 들어 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를 그대로 설정.
  • Update Dynamic Movement Settings
    • 현재 허용되어 있는 움직임을 이용하여 gait 값을 설정합니다.
  • Get target movement Settings
    • 현재의 무브먼트 셋팅값과 Rotation Mode에 따라 Movement Setting Structure 값을 반환합니다.

 

 

  • Do While On Ground // Update Grouded Rotation : 아래를 펼쳐서 확인
    • Looking Direction 부분에서는 부드러운 회전을 위해 Velocity Direction 부분에서는 루트모션의 커브값을 제어하기 위해 회전Value를 정확하게 처리하기 위한 공간
더보기

 

  • Can Update Moving Rotation : 루트모션을 사용하는지 이동중인지등을 체크하는 함수 입니다.

 

  • Calculate Grounded Rotation Rate : 이동 설정에서 현재 회전율 곡선을 사용하여 회전율을 계산함. 매핑된 속도와 함께 곡선을 사용하면 각 속도의 회전 속도를 높은 수준으로 제어할 수 있게 됨. 반응성을 높이기 위해서 속도를 높이면 됨.

    • Get Mapped Speed : 0 = 정지, 1=걷기, 2=달리기, 3=질주로 지정하여 캐릭터의 현재속도를 매핑함. 이동 속도를 변경할 수도 있지만, 일관된 결과를 위해 계산에 매핑된 범위만 계속 사용할수 있음.
  • Smooth Character Rotation : 더욱 부드러운 회전을 위해 대상 회전을 보간함.

 

 

  • Not Moving : 움직이지 않을 때 값을 사전에 처리하는 구간
  • Limit Rotation : 캐릭터가 특정 각도이상 회전하는것을 방지하기 위한 도구입니다.

 

현재 상태에서는 스켈레탈 메시의 애님 시퀀스등이 아직 호출되지 않고 있어 단순한 움직임만 처리 되고 있지만, 스켈레탈 메시가 등록되고, 루트모션을 사용하는 모션들이 사용되면 각각의 성격에 맞게 계산이 이루어지게 된다.

 

 

  • Do While In Air : 공중에 떠 있을때 로테이션을 처리하는 부분.
    • Velocity / Looking 보다는 Aiming에서 좀더 빠르게 반응하도록 설정되어 있음.

 

  • Mantle Check :아래를 펼쳐서 확인
    • 공중에서 떨어질 때 맨틀이 체크될 때 적절한 모션이 출력되도록 처리 한다.
더보기

 

 

캡슐을 체크하여 오브젝트와 닿았는지 체크하는 부분
맨틀높이에 따른 적절한 처리를 진해함
조건이 맞을 때 Mantle 움직임을 시작함.
  • Mantle Start : 위 조건들을 수집하여 가장 적절한 모션을 가장 적절한 위치에 업데이트하여 출력하는 역할을 한다.

 

 

  • Do While in Ragdoll : 아래를 펼쳐 확인
    • 주인공이 사망할 때 Ragdoll 시스템이 발동하게 되는데, 가장 좋은 타이밍에 Ragdoll이 작동하고, 캐릭터가 다시 일어날 때 스냅샷을 적절히 사용하도록 셋팅한다.
더보기

 

pelvis가 Physic Body를 설정하는데 중심역할을 하게 된다.
캐릭터가 누울 때 방향이 위인지 아래인지 체크한다.
대상 위치에서 아래쪽을 추적하여 대상 위치를 오프셋하여 봉제 인형이 바닥에 누워 있을 때 캡슐의 아래쪽 절반이 바닥을 통과하는 것을 방지합니다.

 

렉돌이 끝나는 시점에 스냅샷을 쓰게 되는데 위 맵틀 스타트에서 얻은 정보가 스냅샷을 실행하는데 필요한 소스로 활용된다.

 

반응형

+ Recent posts