A game I'm making uses planes, however, Roblox causes players to lose momentum drastically when free falling or jumping. I made a fix to this, but it has 2 main issues. For one, animations are bugged out since I have to disable the falling and jumping states. For two, players are unable to control their movement whilst jumping/falling. Perhaps it could be that the jumping and falling states are enabled, but then I would need to figure out how to rework their physics due to them causing velocity to be lost. Also, since there is no detection, players can infinitely jump whether falling/jumping or not. This would be fixed if Freefall and Jumping states were enabled, however, I'd still need to bypass their physics. Any help is appreciated!
local char = script.Parent
local hum = script.Parent:WaitForChild("Humanoid")
local root = script.Parent:WaitForChild("HumanoidRootPart")
local force = hum.JumpPower
hum.UseJumpPower = true
hum.AutoJumpEnabled = false
hum.JumpPower = 0
hum:SetStateEnabled(Enum.HumanoidStateType.Freefall,false)
hum:SetStateEnabled(Enum.HumanoidStateType.Jumping,false)
local states = {Enum.HumanoidStateType.Freefall,Enum.HumanoidStateType.Jumping,Enum.HumanoidStateType.Physics}
local db = true
game:GetService("UserInputService").JumpRequest:Connect(function(processed)
if db == true then
db = false
local safe = true
for i,v in pairs(states) do
if hum:GetState() == v then
safe = false
end
end
if safe == true then
root.AssemblyLinearVelocity += Vector3.new(0,force,0)
wait()
end
db = true
end
end)

2 comments
Are you trying to freeze the player midfall to make it seem like they're falling infinitely?
How do you get "Freeze a player mid-air" out of "preserve momentum when jumping". I mean to have the player keep on moving than jumping rather than stopping mid-air