17 장에서 키 입력을 통한 회전이 아닌, 마우스의 입력값을 통해서 회전을 구현해본다
따로 함수를 구하지 않고 , 기존에 Pawn 에 내장되어있는 함수를 호출하도록 한다
FPS 를 할때 Y 축을 반대로 ( 마우스를 올릴경우 밑으로 회전 ) 을 할 수 있는 반대 옵션이 있는데 , 외국인들은 이렇게 반대로 플레이하는 사람이많나보다.
위는 기본 MovementComponent 를 사용하게 되면 , 바라보고 있는 y 축 각도에 따라서 이동속도가 달라진다. 하지만 강의에서 작성했던 이동 코드를 살펴보자.
void AShooterCharacter::MoveForward(float Value)
{
if ((nullptr != Controller) && (0.0f != Value))
{
// find out which way is forward
const FRotator Rotation{ Controller->GetControlRotation() };
const FRotator YawRotation{ 0,Rotation.Yaw,0 };
const FVector Direction{ FRotationMatrix{YawRotation}.GetUnitAxis(EAxis::X) };
UE_LOG(LogTemp, Warning, TEXT("VecSize : %.5f"), Direction.Size());
AddMovementInput(Direction, Value);
}
}
여기서 Ratation 행렬을 통해서 축의 방향을 꺼내올때 Normalized 가 일어나서 반환이 된다..!
이 처럼 직렬화가 되서 나오기 때문에 이는 LookUp 에 관계없는 이동이 가능했던 것이었던 것이었던 것 이였다
이 그림처럼 원래는 벡터가 정규화가 진행되어 1 벡터만큼 움직이는데 , 빨간 시선방향처럼 벡터가 밑을 향한 상태에서 ? World 의 정면 벡터가
어어 이것처럼 무튼 그렇고 그렇게 되서 이동 속도가 느려지는게 아닐까~~
? 나 이거 왜하고있음