Player's Position/CFrame not being updated when using Metamethods, and I don't understand why

So recently I’ve been working on a “PowerUp” system, basically one of those roblox simulator often seen mechanic, where you go around and collect power ups to gain certain amount of points to boost your performance.
While everything was completely fine, but later on when I try to combine it with other mechanics, I realize that player’s Positions/CFrames are not getting updated at all. No matter how much I move, on the server-side, player’s forever standing at spawn.

Naturally I tried searching the web, trying to see, what might be causing the issue, and at the end I found this post which mentioned it as a Roblox glitch that has been happening for years, also provides a sort of work-around for my issue, Changing player position not working in a metamethod.

But even with this work-around, I’m not really satisfied, since I still don’t get why it’s happening, and how can I prevent it in the future, as I’m still willing to utilize Metamethods more and more.

My Metathod is inside a ModuleScript, which I then call using a LocalScript.

It seems like no matter what form or what kind of Touched Script you add into the Metamethod it stops the character’s Position&CFrame from being replicated. I’m not uploading the script just yet, since it’s pretty much a Whole Mechanic in one function, and it doesn’t really provide that much information for solving this issue.
Since I’ve tested multiple ways, and the results all point toward having a “Touched” Function within the Metamethod. But if you still insist and really do know what you’re up to, feel free to still comment and I can DM you the script.

Are you changing the position property or the CFrame property?

Your problem sounds more like this other problem and not the one you researched:

Sorry for the late reply, haven’t been available to go through my own scripts, and surprisingly, NONE, NOT EVEN A LINE, of my scripts effected Player’s Position/CFrame, only a few used them as references/variables.
So it’s even weirder to me how this is happening.
But thanks for the reply and I’ll definitely check it out :slightly_smiling_face:

So after looking into the post, also Wigglyaa providing information of “Touched”, I went through the scripts, and found this simple function right here,

local m = Instance.new("Part")
m.Name = "Magnet"
m.Size = MagnetSize
m.CanCollide = false
m.Transparency = 1
m.Parent = c
m.Position = HumanoidRootPart.Position
local we = Instance.new("Weld",m)
we.Part0 = m
we.Part1 = HumanoidRootPart

Turns out, this function is what’s causing the problem, never knew that welding parts on to HumanoidRootPart would cause such an issue. After changing the Weld Target onto UpperTorso, the problem is fixed, thanks for everyone who replied, CHEERS! :grin:

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.