Yes this post has been made many times, but for each post it seems to be a different solution.
People have said use AssemblyAngularVelocity or AssemblyLinearVelocity but those values never seem to change (Idk if its just me but they seem not to be).
People have said to just check the parts current po, wait a second and then get the new one and find the distance, but I cant really wait cause it’ll mess up the rest of my code.
What do you need to get the velocity for? Are you displaying the speed or something else?
BasePart.AssemblyLinearVelocity returns a Vector3, BasePart.AssemblyLinearVelocity.Magnitude gives you the speed in any direction.
If you have some sort of update loop, you can save the velocity to a variable at the top of the script with BasePart.AssemblyLinearVelocity.Magnitude or pass it in directly to wherever you are displaying it. If you don’t, look at RunService and try using this update loop:
local RS = game:GetService("RunService")
RS.RenderStepped:Connect(function()
end)
When you change the AssemblyLinearVelocity does the part in the viewport move? If you are changing the velocity at set intervals or something else, AssemblyLinearVelocity should update. Are you setting AssemblyLinearVelocity directly or using ::ApplyImpulse?
Can you send a video of the problem? What do you mean by it doesn’t update? Does the AssemblyLinearVelocity in the properties window not match the actual result?
That happens a lot. Usually unselecting the part or selecting something else gets AssemblyLinearVelocity to update properly.
However, getting AssemblyLinearVelocity using BasePart.AssemblyLinearVelocity returns the newest values.