To give context: rigs automatically create a child under every part called OriginalSize which keeps track of the objects original size. Whenever an update gets triggered to the rig, it will fix the objects size by doing Size = OriginalSize.Value * Model.Scale.
However, if an OriginalSize property does not exist (for example, you add a part yourself), when an update triggers, this is what will happen:
- OriginalSize is added based on the parts current size
2. Modify that parts size by doing Size = OriginalSize.Value * Model.Scale
2, Modify that parts size by doing Size = OriginalSize.Value * Vector3.new(Humanoid.BodyWidthScale, Humanoid.BodyHeightScale, Humanoid.BodyDepthScale)
This is problematic as the object is clearly changing size from its intended size as a developer (unless you knew to manually add an OriginalSize value yourself or Model.Scale is set to 1).
Ideally:
-
Any newly added part in a rig that creates an OriginalSize child should calculate its value by doing:
OriginalSize.Value = Part.Size / Model.Scale.
OriginalSize.Value = Part.Size / Vector3.new(Humanoid.BodyWidthScale, Humanoid.BodyHeightScale, Humanoid.BodyDepthScale) -
If no OriginalSize child is present, the part should be left alone
Addendum: It appears it doesn't scale by Model.Scale, it actually uses the following humanoid properties to scale on each axis:
Here is a repro of the issue that can occur: