Weird issues with Humanoids and Locally Created Parts

I am having some very weird problems with Humanoids and Locally Created Parts.

So, we have my Character:


Now, what I want to be able to do is to create parts on the client and weld them to the character.

But here is the problem:


As you can see, my player is stuck into the ground. I can jump some times, and other times I cannot jump. I cannot walk around, only move my character when in air from a jump. I however can rotate my character.

But more importantly, the server no longer updates my character’s position.

Here is what the server is seeing:


But in reality, my character is over here:


It seems as if the parts I created on the client, don’t actually have network ownership for my client???

So I did some more testing…

When I create a brick on the server, but weld it to the character on the client; I have no issues. Its all working as it should be.

However, if I create a brick on the client and weld it to my character on the client, I experience the same issue.

Here are my questions:

  1. Why is the server not updating the character whenever I weld a locally created part to the character?
  2. Why is my humanoid acting like it cannot support its weight? I already tested by welding a giant part to my character using the server-side created method, and did not experience my humanoid sticking in the ground.
  3. Why does it seem like the parts created by the client aren’t responding to physics like they should be?

My ultimate goal is to have all assets created by each client, effectively making the server only responsible for what is absolutely required.

I want to be able to weld stuff to my character, I’d hate to have to CFrame stuff to my character every frame to get the same effect.

Can anyone help me resolve this issue?

Similar to this problem:

Eh… I’ve used humanoids for stuff like this, locally welding stuff onto character and server-side enemies with client-side models and it’s a mess. Humanoids are awful if you’re working with this kind of thing. Something you could do is use TweenService and update it often but I don’t think that’s a good solution for you.

1 Like

I am thinking of somehow maybe making custom humanoids. Gonna test a few things and see if I can figure out an alternative approach to characters entirely.

I think I may have possibly figured out a workaround.

  1. Make custom humanoids to ensure that the stupid phase-into-ground does not happen.
  2. Have one HumanoidRootPart represent each character on the server
  3. Put a BodyVelocity with 0,0,0 inside the part
  4. Make our own character on the client entirely, and use the custom humanoid.
  5. Every frame we will update the CFrame of the HumanoidRoot Server Part, thus ensuring that all other players are capable of recognizing the character’s position.

Custom humanoids are a pain to set up but I think you’ll find that ultimately, it’ll be worth it. Good luck!

1 Like

I’ve had the exact same problem a week ago and nothing I did fixed it, so in the end I had to do a loop and tween my local character to the server character.


Rather than tweening, I am just updating the CFrame on a Last BindToRenderStep.

My theory is that it actually shouldn’t have any noticable performance issues. Custom Animations are doing the same thing, except x16. Essentually, it is the equivilant of animating one part.

Are the parts you’re welding to your character too dense?

Nope. Already tested by welding a non-local part with immense mass, and had no issues.

The server can’t update your characters position if you are welding parts to the character client side I believe.

Yes it can, it works fine until you weld the part to the character.

Forgot to add the ‘if it is welded’ part.

Random thought on this. Can you remove the humanoid locally and then weld it? Maybe that’ll still work, as it gets rid of the humanoid.