This is what I have so far.
The Interp on the SetActorLocation seems to be working.
The on on the Rotation is not.
void AMyCharacter::OrientTowardsTarget(AItem* Target)
{
if (Target)
{
FVector TargetLocation = Target->GetActorLocation();
FVector TargetForward = Target->GetActorForwardVector();
FVector DesiredPosition = TargetLocation + (TargetForward * 20.0f);
// Smoothly interpolate position
FVector CurrentLocation = GetActorLocation();
FVector SmoothedPosition = FMath::VInterpTo(CurrentLocation, DesiredPosition, 1.5f, 1.0f);
SetActorLocation(SmoothedPosition);
// Calculate desired rotation
FRotator TargetRotation = UKismetMathLibrary::FindLookAtRotation(GetActorLocation(), TargetLocation);
// Smoothly interpolate rotation
FRotator CurrentRotation = GetActorRotation();
FRotator SmoothedRotation = FMath::RInterpTo(CurrentRotation, TargetRotation, 3.f, 1.0f);
SmoothedRotation.Roll = 0.0f;
SmoothedRotation.Pitch = 0.0f;
GetController()->SetControlRotation(TargetRotation);
}
}