Weird jump issue

Hi there

I have a very weird jump issue that I have no clue how to fix. I have made a custom movement system attempting to emulate Source/Quake engine movement. This means I have to decrease the height of the jump to only 2 studs high (Dimensions - Valve Developer Community).

This creates a weird glitch where when the Humanoid is meant to transition from Jumping to Freefall, it instead switches to Landed instantly, forcing the player down towards the ground (left is what should happen, right is what does happen). When crouching, this does not happen. I think it might be about height above the ground but I can’t be sure.
bad drawing

Also a video, it’s not great because my PC doesn’t handle recordings perfectly but it might give you the general idea:

I’m using Humanoid.Jump to make the player jump in the same way which the regular Roblox ControlModule does. I am also using a custom StarterCharacter which may have something to do with it

Any help is appreciated
Thanks.

2 Likes

Ummmm maybe try to look in the mass of the model maybe it’s because of that?

Tried setting everything in the model to massless, sadly didn’t work.

could you show the script? that could help

It works exactly the same as Roblox’s own ControlModule so you can look at it within the proper code there (i’ve integrated my stuff into the ControlModule, haven’t changed jump at all though)

function ControlModule:OnRenderStepped(dt)
	self.Humanoid.Jump = self.ActiveController:GetIsJumping() 
end
-- this is not all that's in here, but it's all thats relevant to this

^ within ControlModule itself

function BaseCharacterController:GetIsJumping(): boolean
	return self.IsJumping
end

^ within BaseCharacterController

function Keyboard:Enable(Enable: boolean)
	self.JumpRequested = false
	self:UpdateJump()
end

function Keyboard:UpdateJump()
	self.IsJumping = self.JumpRequested
end

function Keyboard:BindContextActions()
	local HandleJumpAction = function(ActionName, InputState, InputObject)
		self.JumpRequested = self.JumpEnabled and (InputState == Enum.UserInputState.Begin)
		self:UpdateJump()
		return Enum.ContextActionResult.Pass

	    ContextActionService:BindActionAtPriority("JumpAction", HandleJumpAction, false,
		self.ControlActionPriority, AssignKeyCodeJump)
	end
end

-- once again, this is just the relevant stuff

^ within Keyboard (there’s other stuff for other devices)

Everything there is written by Roblox. I haven’t messed with jumping at all, I don’t know how this has happened.