Is there a way to create scripted momentum that feels "natural"?

In my puzzle game, I’ve been trying to create jump pads close to the ones found in the Portal series.

So far, I’ve created a script that launches people forward when they walk on it, but it feels really fake and doesn’t always launch someone up.

I’ve set the AssemblyLinearVelocity (Z) to 300 to fling people up.

code:

local part = script.Parent

script.Parent.Touched:Connect(function(plr)
	local char = plr.parent
	local hum = char:FindFirstChildWhichIsA("Humanoid")
	if hum then
		hum.WalkSpeed = 50
		hum.Jump  = true
		wait(1)
		hum.WalkSpeed = 16
	end
end)

Humanoids follow different rules for movement/momentum when they are standing/running/jumping normally. If PlatformStand is true, the rig will follow typical physics rules. Maybe setting this property and the velocity manually will get the effect you’re after.