Massless Part with a HingeConstraint Affects Character Movement

In my game I have pickaxes which the players use to mine ores. One pickaxe in particular has rotating cogs on the pickaxe itself. These cogs are .Massless = true, and they are rotated using a HingeConstraint set to ActuatorType = Motor. The pickaxe is welded to the player’s right hand, and then an animation is played when they mine.

I was expecting Massless parts to not have any impact on physics at all.
However, when the player is mining with this pickaxe their character is moved around.

As you can see in the gif above, the first pickaxe causes the player to move around while the second does not. (The slight movement you see is slight camera shake when a block is mined.)

This happens to everyone who uses this pickaxe, both in live and in studio.

Here is the pickaxe which causes the issues:
BuggedPickaxe.rbxm (37.4 KB)

In-game I simply weld it to the character’s RightHand and then play the pickaxe animation.

5 Likes

By connecting the cogs via HingeConstraints, they become separate assemblies from your character’s assembly, and each assembly must have a mass. So even though they are marked as massless, they still have the mass calculated by their density.

If you use Motor6Ds instead, the cogs will be part of the same assembly as the rest of the character, and the .Massless property will work as expected.

Generally you should use Motor6Ds for animation purposes rather than HingeConstraints, which are intended for physical interactions.

This is all explained more in depth here: New BasePart Properties: Massless & RootPriority

4 Likes