(why does everything require attachments these days -_-)
Anyway, very simple build using a HingeConstraint. When I push the block on top to spin it, it occasionally sees a delay before the part starts rotating. Other times it is instant however.
Looks like a case for a need for network ownership. Physics objects can be owned by the server which is not as responsive as having them owned by the client, and although Roblox automatically transfers ownership occasionally, there is no guarantee unless if you set it yourself via scripts. See:
In this case I’d suggest setting the ownership if you’re within a certain distance from the part. If there are multiple players, pick the closest one.
Using the worst possible code - solely for testing - I set the grey part’s Ownership to my player script.Parent:SetNetworkOwner(game.Players:FindFirstChild("milanomaster"))
It seems to be just as smooth as if it were a Client Sided object. Thanks!