Allowing for Air control while maintaining accurate HumanoidStateType.Flying physicis

Hello, right now i currently attempting make a rocket jumping system inside of Roblox, making it as similar as possible to tf2. However, I am having an issue with humanoid states If i use Humanoid:ChangeState(Enum.HumanoidStateType.Flying) when hit by a rocket, the player loses the ability to air strafe (which i have borrowed from Bunny Hopping Movement ) However, not changing the Humanoid state will make it so the player rapidly deaccelerates whilst in midair. I am wondering if there is a solution to allow the player to control their Character in midair while also allowing realistic physics.

I have linked two videos for comparison between the two games.

Please note in this video I do not have the humanoid change state to flying when launched.