본문 바로가기

Unreal/Udemy 강의

Unreal Engine 4 C++ The Ultimate Shooter Course Section 8-1

Rotate Root Bone

현재 캐릭터를 제자리에서 회전 시켜보면 발이 자연스럽게 돌지 않는 모습을 볼 수 있다.

이에 대해 수정을 해줄 것이다.

 

먼저 이를 위해서는 Belica_Skeleton의 root에 대해 먼저 볼 필요가 있다.

root는 모든 skeleton의 중심으로, 해당 root를 회전 시키면 캐릭 전체가 회전하는 것을 볼 수 있다.

따라서 우리는 이 root를 이용해 제자리 회전을 구현해 나갈 것이다.

이는 AnimInstance 클래스에서 진행된다.

 

이제 root를 회전 시키기 위한 변수들을 선언해주자.

 

함수도 이어서 생성해주자.

 

Speed가 0보다 크면 움직이는 중이어서 제자리 회전이 필요없으므로 빈칸이다.

스피드가 0일 때를 고려하자.

우선 현재 캐릭터 Yaw 회전 값과 직전 Yaw 회전 값을 저장하여 해당 값들의 차이를 구한다.

그렇게 얻은 YawDelta 값을 통해 RootYawOffset 값을 구해준다.

그리고 화면에 디버그 메시지를 출력하도록 하였다.

 

그리고 생성자를 생성하여 위에 선언했던 변수들을 모두 초기화 해주자.

 

그리고 위에 만든 TurnInPlace() 함수를 UpdateAnimationProperties() 함수에서 호출해주자.

 

이제 컴파일을 해서 실제로 출력되는 디버그 메시지를 확인해보자.

 

이제 AnimGraph로 가자.

여기서 Rotate Root Bone 함수를 통해 회전 값 반영이 가능하다.

Yaw 값 말고도 2가지 값이 더 있는데, 여기선 필요 없으므로 노출을 없애주자.

그리고 Yaw 값 Interp Result의 체크를 활성화하여 Interp Speed 값을 20씩 할당해주었다.