내배캠 TIL

[내배캠 TIL 260120] Unreal Pawn 클래스로 캐릭터 Move 구현

xodn246 2026. 1. 20. 21:27
  1. Pawn과 Character 차이
    • Character는 기본적으로 Capsule, SkeletalMesh, CharacterMovementComponent가 포함되어 있음.
    • Pawn은 기본 이동 로직이 없으므로 직접 이동 로직을 구현해야 함.
  2. 이동 구현 구조
    • Move 함수는 FInputActionValue를 받아서 Controller Rotation 기준으로 이동 방향 계산
    • Tick에 의존하지 않고 AddActorWorldOffset을 사용해 바로 이동 가능
    • DeltaTime을 곱하면 프레임 독립적 이동 가능
  3. Move 함수 작성 예시
void AMyCharacter::Move(const FInputActionValue& Value) 
{ 
   if (!Controller) return; const FVector2D Input = Value.Get<FVector2D>(); 

   if(Input.IsNearlyZero()) return; 
   const float DeltaTime = GetWorld()->GetDeltaSeconds(); 
 
   const float Speed = NormalSpeed; // Controller Rotation에서 Yaw만 사용 
   const FRotator ControlRot = Controller->GetControlRotation(); 

   const FRotator YawRot(0.0f, ControlRot.Yaw, 0.0f); // Forward / Right 방향 계산 
   const FVector Forward = FRotationMatrix(YawRot).GetUnitAxis(EAxis::X); 

   const FVector Right = FRotationMatrix(YawRot).GetUnitAxis(EAxis::Y); // 입력값으로 이동 벡터 생성 

   const FVector MoveDir = Forward * Input.X + Right * Input.Y; // 이동 적용 AddActorWorldOffset(MoveDir.GetSafeNormal() * Speed * DeltaTime, true); 
}

    4. InputAction 바인딩

  • EnhancedInputComponent에서 Action 바인딩 후 Move 함수 호출
  • Tick 없이도 실시간 이동 가능