Pet being welded to the Hat instead of the other way around

I’m working on a customisation system for pets in my game, right now no matter which way around I set the Part0 or Part1 to the pet is welded to the hat instead of the hat being welded to the pet which is what I want.

I’m using a Motor6D.

This is a screenshot of what I’m trying to weld.

I’m able to change the C0 of the Motor6D which changes the position of the pet so that hat ends up in the correct position, but I believe that if I then try and weld the pet to the player it won’t go to planned.

1 Like

Connected physics bodies have a notion of a “root” part. All non root parts connected by the weld/constraint will conform to the root part. Unfortunately, the root part for physics bodies is not determined by Part0 of welds/constraints, but instead by which part is largest (bounding nox – not mass). There are a number of ways you can fix this:

  • Manually CFrame the hat to the pet and then weld
  • Make the bounding boxes (not mesh sizes) of accessories smaller, or the pets’ larger
  • Name the pet’s primary part “HumanoidRootPart” so it gets extra priority as the root part

The first two solve the symptom – not the problem, so you may find your game breaking again if you use those. For instance, later you add an even larger accessory which causes the bug to return, or you forget to manually CFrame something else to the pet a month later, causing the bug to crop up.

I recommend the last of the three. This will allow you to manually specify which part becomes the root (unless the other part is > 100x larger, because yay let’s make this even more complicated). This is what I had to do for the elevators in my game, and it works flawlessly.

3 Likes

Aaa, the pet is literally just a mesh part with the accessories parented to the it. I guess I’ll have to change the way I’m doing the pet to make it work.

Thanks for the suggestions. <3

It would be nice if roblox made it so part0 gets welded to part1 though :eyes:

You can still name the pet MeshPart HumanoidRootPart in that case – it doesn’t have to be in a model.