Need help with GetPropertyChangedSignal

How can I get it to work properly?

local plr = game.Players.LocalPlayer
	local Cha = plr.Character or plr.CharacterAdded:Wait()
		local Hum = Cha.Humanoid
			local HumanoidRootPart = Hum.RootPart
			
HumanoidRootPart:GetPropertyChangedSignal('Position'):Connect(function()
	print('Position')
end)

HumanoidRootPart:GetPropertyChangedSignal('Orientation'):Connect(function()
	print('Orientation')
end)

HumanoidRootPart:GetPropertyChangedSignal('CFrame'):Connect(function()
	print('CFrame')
end)

wait(5)
HumanoidRootPart.CFrame = CFrame.new(0,50,0)

It’s not printing anything at all when I move around.

It only fire’s when a script edits the HumanoidRootPart Position

https://gyazo.com/1c1499f6c79e08e73ad12c07bdee51ec

# GetPropertyChangedSignal

2 Likes

I think something regarding the fact that these properties don’t fire the Changed signal was raised before. You’re already using the method correctly so your issue relies in the fact that these properties don’t fire the Changed method on update.

1 Like

Is there a good reason that they don’t fire?

Is this going to be reliable in the future?

(It’s ok if you don’t know)

1 Like

They don’t fire unless edited by a script because they would fire way too much iirc.

2 Likes

So I’m suppose to use a loop to check instead?

Alright.


I also found this a little bit too late

3 Likes

Properties that fire too often do not run the Changed event.

This event does not fire for physics-related changes, like when the CFrame , Velocity , RotVelocity , Position , Orientation and CFrame properties of a BasePart change due to gravity.

8 Likes

Could it be that your character isn’t Dyce losing yet?

Try

Cha = workspace:WaitForChild(plr.Name)

Consider using this on humanoid’s as well. Add prints along the way to see what is loaded.

Edit:

I guess PropertySignalChange only fires when a script changes the actual property of the object?

1 Like

Both .Changed and :GetPropertyChangedSignal() don’t fire when variables are updated by physics. This includes movement variables like CFrame, Position and Rotation in your case. Instead people use RunService.Stepped:Connect() for this. (From what I’ve read and experienced myself)

9 Likes