Make HumanoidRootPart's velocity relative to camera

In first person, when you apply a velocity into a HumanoidRootPart, the character will fly upward and due to gravity it will gradually fall downward.

However, what I want to achieve is to position the velocity to be infront of the camera with a loop. But that would make the player fly into that velocity position, that’s why we gotta account for the gravity as well.

A similar behavior can be observed in the game Bhop:

You can see that their character’s velocity changes as soon as their character direction changes.
I’m using Basepart.Velocity, I know it’s deprecated it’s just easy to use.