Any ideas as to why this is occurring?
It's kinda hard to tell but the character does a slight double jump before touching the ground.
I'd image it's related to the humanoid hip height but I've changed it many times now and the only time it stops doing it is when the character is too low with it's legs sticking through the floor.
EDIT: If anyone stumbles upon this with the same issue, I fixed it by making the HumanoidRootPart the length of the entire rig, originally it was only the size of the Torso but I extended it down to the feet
Try this.
local UserInputService = game:GetService("UserInputService") local localPlayer = game.Players.LocalPlayer local character local humanoid local canDoubleJump = false local hasDoubleJumped = false local oldPowerlocal TIME_BETWEEN_JUMPS = 0.1 local DOUBLE_JUMP_POWER_MULTIPLIER = 1.5 function onJumpRequest() if not character or not humanoid or not character:IsDescendantOf(workspace) or humanoid:GetState() == Enum.HumanoidStateType.Dead then return end if canDoubleJump and not hasDoubleJumped then hasDoubleJumped = true humanoid.JumpPower = oldPower * DOUBLE_JUMP_POWER_MULTIPLIER humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end local function characterAdded(newCharacter) character = newCharacter humanoid = newCharacter:WaitForChild("Humanoid") hasDoubleJumped = false canDoubleJump = false oldPower = humanoid.JumpPower humanoid.StateChanged:connect(function(old, new) if new == Enum.HumanoidStateType.Landed then canDoubleJump = false hasDoubleJumped = false humanoid.JumpPower = oldPower elseif new == Enum.HumanoidStateType.Freefall then wait(TIME_BETWEEN_JUMPS) canDoubleJump = true end end) end if localPlayer.Character then characterAdded(localPlayer.Character) end localPlayer.CharacterAdded:connect(characterAdded) UserInputService.JumpRequest:connect(onJumpRequest)