More accurate way to boost the player forwards or upwards?

Hi,

I made speed pads or jump pads using the deprecated property Velocity (Which I later changed to AssemblyLinearVelocity). The problem is, Velocity and AssemblyLinearVelocity isn’t very accurate, and AssemblyAngularVelocity doesn’t work how I want it to work. So what is the best way to boost the player either forward or upwards?

For reference:

for _, Pad in pairs(CollectionService:GetTagged("Pad")) do
	if not Pad:IsA("BasePart") then
		continue
	else
		Pad = Pad :: BasePart
	end
	
	local Velocity : Vector3 = Pad:GetAttribute("Velocity")
	local Sound : Sound = Pad:FindFirstChild("PadSound") or Pad:FindFirstChildOfClass("Sound")
	
	if Velocity then
		Pad.AssemblyLinearVelocity = Velocity
	end
	
	Pad.Touched:Connect(function(otherPart: BasePart) 
		if not Touched then
			Touched = true
			
			local newSound = Sound:Clone():: Sound
			newSound.Parent = Pad
			newSound.PlayOnRemove = true
			
			newSound:Destroy()
			
			task.wait(_delay)
			Touched = false
		end
	end)
end

Setting an Anchored Part’s AssemblyLinearVelocity is very accurate for me.

Not for me, when I make a pads assemblylinearvelocity to something like 0,300,0 it would also yield different results, but that is what I’m using until I find something better…

I use align position to do stuff like this which is relatively accurate for me

How so? do you just make an attachment to your destination as in a speed boost?