Roblox Default Jump Extremely Inconsistent

The default Roblox jump is extremely inconsistent especially when dealing with lower fps.

I am currently programming a football game and timing and jump height is very important to be consistent so that the game can be fair.

In every Roblox game by default if you swerve your character properly you can increase your jump height. Depending on how well you time the swerve, you can jump up to almost 2 and a half the normal jump height.

This applies not only to jump height but jump power too.

The lower ur fps the higher the difference is. On 15 fps the game is still playable and you’re jumping twice the normal height of done properly.

It’s not only extremely easy to do this by accident but once you learn how to do it you can do smaller increases consistently.

I’ve tried maxing the y velocity to 50 on a humanoid.jump but this is isn’t a solution because your velocity can be messed up at any point in your jump and loops are not good bc they’re with detention too.

Your velocity does change in accordance to the glitched height too. A normal jump using my system got 50 velocity roughly and a basic glitched jump was 53 which is a noticable difference. The highest I’ve seen was 61.

My game is similar to a game called football fusion and the glitch exists in that too (as does every game) but this is a really widely known glitch in that game and mine.
(Clip below) - I am not using any exploits or anything and this can be replicated in other games as well as my own.

TLDD: Roblox jump height velcoity is inconsistent with body movements especially with fps. Any fix?

Football fusion clip: (these are some examples on 15 fps)

1 Like

thats just how the roblox character controller was made
there is no way around that you will have to make your own character controller if you are really worried about it

Have you tried using UIS.JumpRequest and then just applying an upwards force of 50 or so

actually just caught at a good time. yeah I ended up re doing the jump it just was seeing if there was a better way bc now its quite difficult like if u wanted to change the jump power/height u have to use values or modules.

im having a bit of weird movement but its 99% good for what im doing.
if you’re interested in the code (i didnt add sound but u can if need) this was my third try doing this.

quick note: the jump height of 7.2 is roughly 52-54ish I know it says 50.145 but thats just wrong.

cooldown = 0.75
local h=script.Parent:WaitForChild("Humanoid")
local lastjump=time()
local canjump = false

local deb
local Jumpanim = nil
UIS.JumpRequest:connect(function()
	if not deb then deb = true
		local currenttime=time()
		if lastjump+cooldown>currenttime then
			canjump = false
		else
			lastjump=currenttime
			canjump = true
			local char = game.Players.LocalPlayer.Character or  game.Players.LocalPlayer.CharacterAdded:Wait()
			local hrp = char:WaitForChild("HumanoidRootPart")
			if h:GetState() == Enum.HumanoidStateType.FallingDown then deb = false return end
			if h.FloorMaterial == Enum.Material.Air then deb = false return end
			if h.Sit == true then
				h.Sit = false
			end
			hrp.Velocity = Vector3.new(hrp.Velocity.X,54,hrp.Velocity.Z)
			
			for _, track in pairs(h:GetPlayingAnimationTracks()) do 
				track:Stop()
			end
			local animator = h:FindFirstChildWhichIsA("Animator")
			if not animator then return end
			local con 
			con = animator.AnimationPlayed:Connect(function(track)
				track:Stop()
			end)
			con:Disconnect()
			local animation = Instance.new("Animation")
			animation.AnimationId = "http://www.roblox.com/asset/?id=125750702" -- Roblox dance emote
			Jumpanim = h:LoadAnimation(animation)
			Jumpanim:Play()
		end
		deb = false
	end
end)

h.StateChanged:Connect(function(old,new)
	if new == Enum.HumanoidStateType.FallingDown then 
		Jumpanim:Stop()
	elseif new == Enum.HumanoidStateType.Landed then
		Jumpanim:Stop()
	elseif new == Enum.HumanoidStateType.GettingUp then
		Jumpanim:Stop()
	elseif new == Enum.HumanoidStateType.Dead then
		Jumpanim:Stop()
	end
end)``

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.