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 ="BodyPosition", newPet)
			bodyPos.MaxForce =, math.huge, math.huge)

			local bodyGyro ="BodyGyro", newPet)
			bodyGyro.MaxTorque =, math.huge, math.huge)

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