I made it so that it’s literally just a teleport button and it does the same thing. Turns out changing the position does change the orientation to whatever the server thinks it is. VERY annoying and I can’t think of a way to get around it. If linearvelocity worked properly then I might’ve used that but it does a weird thing where if you add it to one player’s character on the server then every other player, as well as the server, will see them teleport at first for some reason. Maybe I could use a bodygyro somehow?
Yes it would work on the client side but I need it on the server side to make the hitbox accurate and stuff. I just expected updating the position to do nothing to orientation no matter what but apparently it does
Yeah same problem happening. I don’t think there’s a solution where I only use the server. I think I’ll try having it get the orientation from the client or something. TYSM though
At this point I’m starting to suspect that this could be some kind of bug since it shouldn’t make a difference on the rotation whether you change the position on the server or the client
I suggest you report this to Roblox just in case, and I also wish you luck finding a solution to this problem
Alright I’m reporting it as a bug, but I get the feeling it’s been like this for a long time and has become expected behaviour or something even though barely anyone seems to be talking about it. Hopefully it’s okay tho and gets fixed. Thanks for helping
UPDATE:
I managed to find a way around it. Basically, the server tells the client to, for a specific amount of time, send a certain CFrame in a loop until that time has passed. That CFrame is the CFrame of the camera IF it was facing forward, basically ignoring its X or Y orientation I forgot which one. You have to use the CFrame of the camera because the server is gonna mess with the character’s CFrame which will mess everything up on the client, so you need a more controlled CFrame that also faces where your character is facing and the camera is perfect for this (assuming you’re in shift lock, otherwise I just send the humanoidrootpart CFrame). THEN on the server, there’s a variable that stores the most recent camera CFrame sent. After that, I just simply move the character’s CFrame forward every frame using the lookvector of the most recent camera CFrame. The result is that the character moves forward in the direction it is facing on the client, with the downside of higher ping boosting you in a delayed direction, but the positive of your hitbox being more accurate from your perspective.
Idk if I’m gonna use this forever because I can also move the character forward on the client and extrapolate its position on the server to keep the hitboxes as accurate as possible, but this camera CFrame method works almost exactly how I imagined my original idea would work. Either way, I’m keeping your answer as the solution since the position changing the orientation is most likely a bug (which I found out I can’t report because you need a higher forum level or something…) https://gyazo.com/29901010bafbc066803c8a66c4774f82 <— this is how it looks at 150-200 ping I think, because I was using the ping simulation thing at the time