How do you stop a character from moving with Linear Velocity?

I usually use Body Velocity but that’s depreciated now, and I read that Linear Velocity was the alternative.

I’ve been trying to figure it out how to simply stop the character from moving with LinearVelocity for the past hour and have not been able to get the results I want. No matter what, the character will not stay still.

The code I’m using is below - the only other code affecting the primarypart is a rotation lock that only changes the rotation of the primarypart, not the position. I tested it without it and it still gives pretty much the same result.

	local LinearVelocity = script.LinearVelocity:Clone()
	LinearVelocity.Attachment0 = PrimaryPart:FindFirstChild("RootRigAttachment")
	LinearVelocity.VectorVelocity =,0,0)
	LinearVelocity.Parent = PrimaryPart


Am I using it wrong? Because it’s really annoying. Like I really don’t care that BodyVelocity is depreciated - and I’d be using it if it wasn’t for the fact that whenever there’s a LinearVelocity affecting the character, even if BV MaxForce is math.huge, the LinearVelocity will move it like that no matter what. And don’t get me started about the fact that if LinearVelocity maxforce is too high, it’ll just teleport the character or fling them. (Sorry for the salty ranting.)

1 Like

you can’t make the player stay still with a linear velocity? the old bodymovers still work faster in terms of physics and have different behavior, just because something got deprecated and replaced does not always mean that it has a worse behavior.

I’ve heard that LinearVelocity is supposed to be the modern version of BodyVelocity with all of the same features.

From what I have experienced in the past hour - LinearVelocity works kinda the same but without the reliability and the ease of use.

I’d be using BodyVelocities if they could stack - which they cannot sadly.

Yea linear velocity does have some network problems which create delayed or unexpected behaviors. Sadly I do not know much ways to do this. You can try setting the all parts on the client in the character velocities to 0 on render step.

Try both of these:

  • Disable the ForceLimitsEnabled property
  • Set Attachment0 to RootAttachment

That worked for me in a baseplate. If you still get these issues, you might have some physics properties set under workspace which are unstable currently and change the behavior of physics. I’m unsure which. Roblox has been experimenting with physics updates recently. Try this in a baseplate.

This didn’t work sadly.

Also the baseplate the videos is only a few hours old - and I haven’t touched anything apart from lighting effects.

I see. Perhaps you have a random beta feature enabled? Try disabling all of them.


Can confirm this works. I made a script and a recording as shown below.

local rootAttachment ="Attachment")
rootAttachment.Name = "RootAttachment"

local linearVelocity ="LinearVelocity")
linearVelocity.ForceLimitsEnabled = false
linearVelocity.Attachment0 = rootAttachment

	local char = player.Character or player.CharacterAdded:Wait()
	if char then
		local humanoidRootPart = char:WaitForChild("HumanoidRootPart")
		rootAttachment.Parent = humanoidRootPart
		linearVelocity.Parent = humanoidRootPart

Found the issue - haven’t found a solution but have found a work-around.

If the start of the beam VFX is attached to the character in anyway, tilting the character would cause the LinearVelocity to freak out for some reason. Maybe it’s because attaching it to the assembly is unbalancing it or something (even though it’s set to massless), but removing it made it reliable and stopped all of my issues.

Instead of using weld or rigid constraints, I’ve started CFraming the start of the beam every frame in the same function I position the end of it.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.