I am making a game where I need zombies. So I decided I would start on the zombie. I created the model and currently scripting functionality for it. So I am stuck on the part where I need to make the whole entire zombie move to my location. I got that working, but not how I wanted. The problem is only the HumanoidRootPart is following me instead of the whole zombie model. So is there any reason why this is happening? Do I need to set a PrimaryPart to my zombie model in order for this to work? If I do need to set a primary part what part should I set it to and what in my code do I need to change?

ZombieScript

local self = {}

local maxDistance = 25

local function FindClosestPlayer(zombie)
	local players = game:GetService("Players"):GetPlayers()
	if #players ~= 0 then
		for _, player in ipairs(players) do
			if player.Character then
				local distance = (zombie.HumanoidRootPart.Position - player.Character.HumanoidRootPart.Position).magnitude
				return player
			end
		end
	end
end

local function AttachAiToZombie(zombie)
	spawn(function()
		while wait() do
			local player = FindClosestPlayer(zombie)
			local zombieHumanoid = zombie:FindFirstChild("Humanoid")
			if zombieHumanoid and player then
				zombieHumanoid:MoveTo(player.Character.HumanoidRootPart.Position)
			end
			wait(0.1)
		end
	end)
end

function self:CreateZombie(position)
	local zombie = game.ReplicatedStorage.Assets.ZombiePrefab:Clone()
	zombie.Parent = workspace.Map.Enemies
	zombie:SetPrimaryPartCFrame(CFrame.new(position))
	AttachAiToZombie(zombie)
end

return self

Testing script

local zombieScript = require(game.ServerScriptService.Modules.ZombieScript)

zombieScript:CreateZombie(Vector3.new(0, 10, 0))

EDIT: I found the answer to my question. I had to set the PrimaryPart to my torso then use the SetPrimaryPartCFrame function.