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.
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.
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)