Help with ropeconstraint leash

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I want to allow the player to be able to walk the cheese
  2. What is the issue? Include screenshots / videos if possible!
    It works, but after a few seconds of walking normally, the cheese randomly teleports into the ground.
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    nobody has my same issue
game:GetService('ReplicatedStorage'):WaitForChild('Walk').OnServerEvent:Connect(function(player)
	if plrr.Name == player.Name then
		local char = player.Character or player.CharacterAdded:Wait()
		local atch0 = Instance.new('Attachment', char:FindFirstChild('HumanoidRootPart'))
		local atch1 = Instance.new('Attachment', tool.Handle)
		local rope = Instance.new('RopeConstraint')
		rope.Name = 'leash'
		rope.Attachment0 = atch0
		rope.Attachment1 = atch1
		rope.Parent = tool
		rope.Length = (char.HumanoidRootPart.Position - cheesemodel.Position).Magnitude * 2.5
		rope.Restitution = .5
		rope.WinchEnabled = false
		rope.Thickness = .3
		rope.Visible = true
		for i,v in tool:GetDescendants() do
			if v:IsA('BasePart') or v:IsA('MeshPart') then
				v.Massless = true
				v:SetNetworkOwner(player)
			end
		end
		cheesemodel.CanCollide = true
		cheesemodel.Name = ''
	end
end)

I assume you meant to have the tool as the leash and another part on the ground? Well, when I use your script with a sphere that way it works. You may have to turn off the ability for the cheese model to collide with things and weld it to a sphere to that the sphere is the one that actually makes the cheese model move instead of a rigid cheese model that may be flung underground.