언리얼5 캐릭터 선형보간 회전

달봉·2024년 4월 11일

언리얼엔진5

목록 보기
1/12

언리얼 개발 중 카메라값을 통한 회전과 움직임에 따른 회전 두 경우를 테스트 해보았는데 움직임이 마음에 들지 않아 추가적인 디테일을 주기 위한 선형보간 회전을 추가하기로 했습니다.

우선 bOrientRotationToMovement와 bUseControllerRotationYaw 설정을 비활성화 하여 카메라에 따른 움직임과 캐릭터 움직임 방향에 따른 회전을 없애고 회전함수를 따로 설정합니다.

방향벡터를 통해 회전값 구하기

캐릭터의 Foward Direction과 움직여야할 방향 Change Direction을 구하고 두 벡터를 이용해 회전값을 구할 수 있습니다.

캐릭터의 방향은 GetActorRotation를 통해, 컨트롤의 방향은 GetControlRotation를 통해 구해옵니다.

두 백터을 내적(Dot)한 결과값으로 cosΘ가 나오게 됩니다
이 값을 아크코사인 하면 Radian값이 나오고 해당값을 Degree로 변환하면 명시적으로 몇도의 회전값이 필요한지 알 수 있습니다.
*해당 값을 그대로 사용하면 회전 방향이 고정되므로 회전 방향은 벡터의 외적값을 통해 결정합니다

선형보간함수를 사용해 자연스러운 회전값을 구할 수 있습니다.

double dLerpTurn =  FMath::FInterpTo(0, dDgrees, DeltaSeconds, fTurnSpeed);

캐릭터가 움직이지 않아도 입력된 방향으로 회전하도록 하려면 Tick 함수에서 회전을 시킬 수 있고
캐릭터의 움직임이 있을때만 회전하도록 하려면 Move 함수에서만 회전을 동반하도록 지정하면 됩니다.

  • 캐릭터의 움직임 설정을 캐릭터 방향으로만 진행할 수 있도록 변경하면 회전을 하며 그 방향으로만 움직이는 일종의 자동차와 같은 움직임을 구현할 수도 있습니다.
profile
개발 블로그

0개의 댓글