The problem is that the velocity you are given is much greater in the air than it is when you’re on the ground.
My system right now uses a planar LinearVelocity to apply the dash velocity whilst accounting for gravity. I’ve tried lowering the friction and friction weight on all parts of the player but that didn’t work.
Edit: Tried applying an upward velocity to see if that would help, it didn’t.
I would recommend you stray away from making it physics based.
If you instead make use of something like a RunService.RenderStepped bind to move the player, you should see much more consistent results.
it’s not a constant velocity, but it doesn’t require coding a “braking” system
it’s really just one line of code that applies an impulse, and from my experience it’s the same regardless of grounded or in-air states
Here is my 2 cents on this, its not bodymover being used fundamentally the the root of the problem is the built in humanoid having a built in air and ground friction, and even different air acceleration.
Most devs will make their own character controller (like me) for more customizability or try out the new character controller.