이전 포스트에서 캐릭터가 캐릭터의 전방을 기준으로 움직였다. 이번엔 카메라가 보는 곳으로 움직이게 한다.
void ASlashCharacter::MoveForward(float Value)
{
if ((Controller != nullptr) && (Value != 0.f))
{
// find out which way is forward
const FRotator ControlRotation = GetControlRotation();
// Controller의 Yaw만 신경쓴다. pitch는 상관없음
const FRotator YawRotation(0.f, ControlRotation.Yaw, 0.f);
// Yaw에 대한 회전을 기준으로, X방향(앞방향)의 벡터를 구한다.
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
AddMovementInput(Direction, Value);
}
}
void ASlashCharacter::MoveRight(float Value)
{
if ((Controller != nullptr) && (Value != 0.f))
{
// find out which way is right
const FRotator ControlRotation = GetControlRotation();
// Controller의 Yaw만 신경쓴다. pitch는 상관없음
const FRotator YawRotation(0.f,ControlRotation.Yaw, 0.f);
// Yaw에 대한 회전을 기준으로, Y방향(오른쪽방향)의 벡터를 구한다.
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
AddMovementInput(Direction, Value);
}
컴파일하고 실행해 보면 카메라 방향으로 움직인다. 하지만 한가지 문제가 더 있는데 캐릭터가 회전하지 않고 문워크를 한다. 몇가지 설정만 해주면 고칠 수 있다.
BP에디터에서 무브먼트 방향으로 회전 조정을 체크해 준다.

컴파일하고 실행해서 확인해 본다.
추가로 회전속도 옵션을 조절해 주면 얼마나 빠르게 캐릭터가 회전할지를 설정할 수 있다.