1. What issue are you having? Describe what is happening when the bug occurs. Describe what you would normally expect to occur.
When using a custom character with a body mover like BodyAngularVelocity, parts within the character that are marked as massless through the property window still have effects on the body movers. What this means is that a big “massless” part will act like it has its full mass to the eyes of the body mover. Normally a massless object would have no effect on a body mover and would be purely decorative.
2. Does the bug happen 100% of the time?
Yes.
3. If so, are there steps that reproduce the bug?
Repro file: MoverProblem.rbxl (14.5 KB)
Repro steps:
Move either of the characters into the StarterPlayer like you would any custom character.
Play solo.
Observe how the one with the small “massless” attachment spins but the larger one does not.
Extra details:
The custom character is a HumanoidRootPart and a head, welded together using a WeldConstraint with a BodyAngularVelocity inside of the root part. The only difference between the two is the size of the “Head” part. The heads in both models are set to massless.
4. Where does the bug happen? Which OS and version are you using?
I’ve observed it on my Windows 10 PC. My roblox studio version is 0.369.1.273919 (I hope thats the version you are looking for).
5. When did the bug start happening?
This has been happening since I first attempted to use massless objects in combination with a body mover
An update on this:
I have noticed that this issue is not limited to just custom characters. This behavior occurs in all cases when a BodyMover is attached to the root of a system where a large “massless” object is attached.
I have also noticed that having the massless property enabled does move the center of mass to the correct spot (center of the root part), however the massless part still has its full inertia and resists the BodyMover’s force.
Here is a gif of the problem to better visualize it:
(Click to watch gif)
As you can see the red massless objects in the top have correct centers of mass, but their inertia is still intact and the bigger one lags behind the smaller one, even though they should turn at the same rate.
Here is a better repro file that shows this issue is not only limited to custom characters: MoverProblem2.rbxl (13.5 KB)
If you are referring to the new movers like LineForce, VectorForce etc, then yes it still occurs. I added a Torque object in place of the BodyAngularVelocity and it had the same effect.
This does look like a bug and this is not the intended behavior. The red part is not root but the body still seems to have higher intertia and it shouldn’t. Mass appears to be 0 for these parts, as expected, so this should only affect rotation, not linear forces and velocity.
I’m having this issue too, my pets rely on BodyMovers but different sizes and amounts of parts require me to endlessly tweak to replicate as similar behaviour as possible.
Given that this is still an issue, a temporary fix that I’ve used is to add the total mass and set the massless property to false and divide it by about 50, will probably need to be tweaked as I only did it quickly.
local TotalMass = 0
local MassParts = {} -- Parts to make actually massless.
for i, v in pairs(MassParts) do
if v:IsA("BasePart") then
TotalMass = TotalMass + v:GetMass()
v.Massless = true
end
end
local NormalTorque = 100 -- The torque that you want it to have normally
local TorquePart = workspace.Part -- The part that has the torque object such as an AngularVelocity constraint or AngularVelocity BodyMover
script.Parent.Base.AngularVelocity.MaxTorque = DefaultTorque * (TotalMass / 50) -- 50 is just a rough guess, can refine it yourself and correct me on what the Precise calculation is to nullify the mass of welded objects.
Hopefully this gets fixed as it’s rather annoying to have to do a work around as messy as this for something that you’d expect, “Massless” should be massless…