Problem woth custom character using vectorforce

Hello people!!! Ermmm i need a help on this… im making a project using vectorforce rn as doing the movement, but rn… its not working that well
So my vector force system for now looks like this:

uis.InputBegan:connect(function(k, i)
typing = i
if not typing and not _G.FCamEnabled then
local t = k
k = k.KeyCode.Name
if k == “W” then
char.VectorForce.Force = Vector3.new(0,0,-75)
elseif k == “A” then
char.VectorForce.Force = Vector3.new(-75,0,0)
elseif k == “S” then
char.VectorForce.Force = Vector3.new(0,0,75)
elseif k == “D” then
char.VectorForce.Force = Vector3.new(75,0,0)
end

end

end)

But when i get pressing some of the keys, the character will just run infinitely, and always gaining speed, + there is this:

Anyways, im kinda new to the custom character stuff but… any help or tip for me will be valuable! Thx

I think you want to be using LinearVelocity. This is why:

Because the VectorForce constraint applies constant force and acceleration, very high speeds may result if no other forces are involved. If you want to maintain a more steady velocity over time, use a LinearVelocity constraint.

The quote is from the Roblox docs: VectorForce | Documentation - Roblox Creator Hub

Another way would be ignoring Roblox’s constraints or physics system, setting the Position/Tranform of the HumanoidRootPart (or just a central part) to the position you want. Do that in a Loop with DeltaTime for every frame. If things are welded properly, the model should move as one, assuming you have multiple parts/meshes in a StarterCharacter or otherwise custom character Model.

Also, for more explanation physics wise, you’re using a Force added over time which adds up. Acceleration is exponential, so that’s why you speed up the way you do. You should limit the max speed you can reach, which can be done with LinearVelocity, not VectorForce.

Hope that all makes sense.