본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-11

애니메이션 속도 계산하기

현재 애니메이션의 속도와 캐릭터의 속도가 같지 않아서 마치 발이 미끄러지는 듯한 현상이 관측되는 것을 볼 수 있다.

이를 개선하기 위하여 애니메이션의 속도를 계산해보자.

이를 위해 우선 앞으로 달리는 애니메이션 모습을 체크해보자.

 

우리가 앞으로 달리는 애니메이션에서 체크해야할 것은 발의 움직임이다.

발이 지면에 붙은 순간의 시간과 발이 지면에서 떨어진 순간의 시간을 이용하여 해당 움직임의 속도를 구할 수 있다.

아래 표시한 마커의 소수점이 해당 시간을 나타낸다. (0.26)

 

그리고 추가로 속도를 구하기 위해 해당 발 움직임의 위치가 필요하다.

우측 상단을 보면 Location을 확인할 수 있는데 로컬 좌표계로 보면 위치가 그대로인 상태에서 회전만 하는 것이기에 위치의 움직임을 구하는 것이 불가능하다.

따라서 월드 좌표계로 전환 후에 얼마나 이동했는지 체크를 해주어야 한다.

 

이를 위해 스켈레톤의 발 부분을 체크 눌러서 선택해주어야 한다.

이는 좌측 스켈레톤 트리에서 선택할 수 있다.

스켈레톤 트리에서 발 선택
지면에 닿는 순간과 떨어지는 순간 시간 체크
지면에 닿는 순간과 지면에서 떨어지는 순간 위치 체크

 

위 값을 토대로 속도를 구하게 되는데 공식은 다음과 같다.

속도 : (종료 시 y 값 - 시작 시 y 값) / (종료 시 시간 - 시작 시 시간)

 

이를 대입해보면 속도 : (-35.923402 - 10.02858) / (0.33 - 0.15) -> -306.34654.. 인 것을 알 수 있다.

 

걷는 동작에 대해서도 똑같이 속도를 체크해주자.

 

지면에 닿는 순간과 떨어지는 순간 시간 체크

 

지면에 닿는 순간과 지면에서 떨어지는 순간 위치 체크

 

마찬가지로 계산을 해보면 다음과 같다.

(-21.816243 - 15.568829) / (0.67 - 0.38 ) -> -128.9140413793103 

 

이제 해당 값을 토대로 BS_Locomotion 파일로 돌아가서 속도를 수정해주자.

달리기의 속도가 대략 308정도 였으니 맥시멈 속도 350으로 두고 50단위로 끊어주도록 해보았다.

스피드 값을 변경한 상태

 

이제 실제 애니메이션의 속도를 계산하여 스피드를 할당해줬기 때문에 전보다 움직임 매칭이 자연스러워진다.