An Example in Blueprint.
A Simple lerp looks like this:
FRotator NewRotation = FMath::Lerp(AltReleasedRotation, AltPressedRotation, Percentage, true); //Lerp
But how to do a Lerp Rotator?
If I remember it right, if you lerp between FQuats, it will automatically do shortest path.
FQuat NewRotation = FMath::Lerp(FQuat(AltReleasedRotation), FQuat(AltPressedRotation), Percentage);
You can use FQuat in SetActorRotation() etc. instead of FRotator.
BTW, if you hover over a node, in most cases you can see where the underlying function is. In this case its KismetMathLibrary. You can open KismetMathLibrary.h and find this function Lerp (Rotator), see it’s RLerp(); Go to KismetMathLibrary.cpp, find RLerp(), and see what is does.
With most nodes, you can see how it works in the code, and write your code respectively.
I am now trying KismetMathLibrary
FRotator NewRotation = UKismetMathLibrary::RLerp(AltPressedRotation, AltReleasedRotation, Percentage, true);
but not sure why I am using a blueprint library if I am developing in C++ ![]()
I didn’t suggest using Kismet library, I said you can see how it’s all done in there. Kismet libraries still use default engine stuff that you can use in c++.
As for control rotation, maybe there’s no converter from FQuat to FRotator, like in actors. You can always convert it manually. After all, that’s exactly what KismetMathLibrary does:
FRotator UKismetMathLibrary::RLerp(FRotator A, FRotator B, float Alpha, bool bShortestPath)
{
// if shortest path, we use Quaternion to interpolate instead of using FRotator
if (bShortestPath)
{
FQuat AQuat(A);
FQuat BQuat(B);
FQuat Result = FQuat::Slerp(AQuat, BQuat, Alpha);
return Result.Rotator();
}
const FRotator DeltaAngle = B - A;
return A + Alpha*DeltaAngle;
}
Yes, Thank You very much Sir for helping me in my study progress, You just solved my problem )
FRotator NewRotation (EForceInit::ForceInit);
NewRotation = FRotator(FQuat::Slerp(FQuat(AltReleasedRotation), FQuat(AltPressedRotation), Percentage));
This works for me, Thank You very very much for helping, I really appreciate it :smiley ![]()