43.1. 앞, 옆으로 움직이기

이전 포스트에서 캐릭터가 캐릭터의 전방을 기준으로 움직였다. 이번엔 카메라가 보는 곳으로 움직이게 한다.

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);
    }

컴파일하고 실행해 보면 카메라 방향으로 움직인다. 하지만 한가지 문제가 더 있는데 캐릭터가 회전하지 않고 문워크를 한다. 몇가지 설정만 해주면 고칠 수 있다.

43.2. 캐릭터 회전

43.2.1. BP

BP에디터에서 무브먼트 방향으로 회전 조정을 체크해 준다.

Untitled

컴파일하고 실행해서 확인해 본다.

추가로 회전속도 옵션을 조절해 주면 얼마나 빠르게 캐릭터가 회전할지를 설정할 수 있다.