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:
Why is the server not updating the character whenever I weld a locally created part to the character?
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.
Why does it seem like the parts created by the client aren’t responding to physics like they should be?
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.
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.
Make custom humanoids to ensure that the stupid phase-into-ground does not happen.
Have one HumanoidRootPart represent each character on the server
Put a BodyVelocity with 0,0,0 inside the part
Make our own character on the client entirely, and use the custom humanoid.
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.
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.