This happens when you hold down space bar to continuously jump and is more noticeable with certain settings.
You can see below on a custom character as well as a regular character that while holding down spacebar, additional jumps occur before the character touches the ground, and even gives them additional height.
(JumpPower 60, Gravity 196.2)
(JumpPower 13, Gravity 35 - Realistic world preset)
This has been mentioned in the announcement thread but should be extracted into its own thread.
I wonder if this is just a consequence of animations being slow to stop. Can you try jumping with the spider again, but this time with the jump animations disabled?
.Touched doesn’t work while holding jump due to this issue.
When holding the jump key on a part that uses the .Touched event it fails to fire most of the time and only fires when a player is walking or jumping at a very slow rate.
The code I used for printing ‘hit’ was:
script.Parent.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
print("Hit!")
end
end)
I am assuming this has been a bug for a very long amount of time but as I usually don’t use .Touched I am unsure as to when this would’ve started.
This is still happening and allows players in my game to get to places they shouldn’t be able to, allows them to avoid touching hazards on the ground, and makes my game look broken in extreme cases.
I ran into this problem today and did some testing.
I did a small override on the default jump behavior, placing a mandatory 1 second delay before the player can jump, I won’t go into exactly how that was done but more or less it looks like this:
if jumpedRecently then
else
jumpedRecently = true
spawn(function()
self.humanoid.Jump = self.activeController:GetIsJumping() or (self.touchJumpController and self.touchJumpController:GetIsJumping())
wait(1)
jumpedRecently = false
end)
end
The problem still occurs, but instead of double jumping you get sporadic alternations between a normal jump and “messed up half jump.”
This tells us that the problem is most likely not related to how the input is being received but more so how the jump power is being delivered or calculated against the gravity.
tl;dr: After a small test, I think we can say with more clarity now, that this is more of a physics problem than an input issue.
The only feasible way to mitigate this is by adding a delay after each .Landed, and even then that can cause some unintended behavior
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local onStateChanged = Humanoid.StateChanged:Connect(function(_,new)
if new == Enum.HumanoidStateType.Jumping then
Humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
task.delay(8, Humanoid.SetStateEnabled,Humanoid,Enum.HumanoidStateType.Jumping, true) -- Incase of Edge Cases
end
if new == Enum.HumanoidStateType.Landed then
task.delay(0.2, Humanoid.SetStateEnabled,Humanoid,Enum.HumanoidStateType.Jumping, true)
end
end)
Humanoid.Died:Once(function()
onStateChanged:Disconnect()
end)
As with touched events, I’ve found the issue comes more down to the glitched way TouchTransmitters react with the jumping animation rather than this bug, and the only way I can think of fixing this is either having another non-collideable part above or using a custom touched implementation (Both of course being headaches)
In my place, I have Gravity at 50 and JumpPower at 13.342. The character is able to jump before touches the ground, exactly as shown in the videos PeZsmistic shared. Really hoping this bug gets looked into by staff.