Actually I was wrong about ApplyVelocityBraking, you will only want to override CalcVelocity; ApplyVelocityBraking is only for actual braking when there is no acceleration. Friction is used for turning in CalcVelocity with code:
// Friction affects our ability to change direction. is only done for input acceleration, not path following.
const FVector AccelDir = GetSafeNormalPrecise(Acceleration);
const float VelSize = Velocity.Size();
Velocity = Velocity - (Velocity - AccelDir * VelSize) * FMath::Min(DeltaTime * **Friction**, 1.f);
There is also fluid friction applied right after that, if bFluid is true.
In your case I would probably override CalcVelocity to set bFluid to false when flying, and use your own friction setting for turning. You could get fancier if you care to only do when there is acceleration (so you still have fluid friction when braking/coasting to a stop). Something like :
void MyMovementComponent::CalcVelocity(float DeltaTime, float Friction, bool bFluid, float BrakingDeceleration)
{
if (IsFlying())
{
bFluid = false;
Friction = MyFlyingFriction;
}
Super::CalcVelocity(DeltaTime, Friction, bFluid, BrakingDeceleration);
}
may be a case where we could add a separate turning friction for flying mode, I’ll think about that for future.