BodyPositions pet system

I’m trying to make a pet follow system using bodypositions and bodygyros
The part follows the player so far fine but when I turn cancollide off it just sticks to the spawn position and doesnt move.

I need to make the pets uncollidable since it’ll be weird and buggy. Is there a better approach? or still using bodypositions but im doing something wrong?

function givePet (player)
	if player then
		local character = player.Character or player.CharacterAdded:Wait()
		
			local humRootPart = character.HumanoidRootPart
			local newPet = part:Clone()
			newPet.Parent = character

			local bodyPos = Instance.new("BodyPosition", newPet)
			bodyPos.MaxForce = Vector3.new(math.huge, math.huge, math.huge)

			local bodyGyro = Instance.new("BodyGyro", newPet)
			bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)

			while wait() do
				bodyPos.Position = humRootPart.Position + Vector3.new(-2, 0, 3)--these are the numbers to edit if you want to change the position the block goes to
				bodyGyro.CFrame = humRootPart.CFrame
			end
		
	end
end