Pet Not Looking Chatacter Successfly!

Hello Guys, I’m Making A Pet Movement System But Pet Not Looking Chatacter Successfly!

Error Video:
https://gyazo.com/bd28843038b4be67dc4e4a34b88a7be7

Error ScreenShot:


image


local plr = game.Players.LocalPlayer
local Character = plr.Character or plr.CharacterAdded:Wait()

local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")

local fullCircle = 2 * math.pi

local radius = 10

local LERPH_ALPHA = 0.1

local function getXAndZPositions(angle)
	local x = math.cos(angle) * radius
	local z = math.sin(angle) * radius
	return x, z
end

local function getAngle(firstPart, TwoPart)
	return math.atan2(firstPart.X - TwoPart.X, firstPart.Z - TwoPart.Z)
end


game:GetService("RunService").RenderStepped:Connect(function()
	
	local PetsFolder = workspace.Pets
	
	local blaclistpartsfolder = game.Workspace.RaycastBlacklistParts
	
	local PetTable = workspace.Pets:WaitForChild(plr.Name):GetChildren()
	
	for i, v in pairs(PetTable) do

		local chrAngle = Character.Humanoid.MoveDirection.Magnitude > 0 and getAngle(v.PrimaryPart.Position, v.PrimaryPart.Position + HumanoidRootPart.CFrame.LookVector) or getAngle(v.PrimaryPart.Position, HumanoidRootPart.Position)

		local x, z = getXAndZPositions(i * (fullCircle / #PetTable))
		
		
		
		local list = {}

		for _, v in pairs(game:GetService("Players"):GetPlayers()) do
			for _, q in pairs(v.Character:GetDescendants()) do
				if q:IsA("BasePart") then
					table.insert(list, q)
				end
			end
		end

		for i,v in pairs(PetsFolder:GetDescendants()) do
			if v:IsA("BasePart") then
				table.insert(list,v)
			end
		end
		
		for i,v in pairs(game.Workspace.RaycastBlacklistParts:GetDescendants()) do
			if v:IsA("BasePart") then
				table.insert(list,v)
			end
		end

		local rayParam = RaycastParams.new()
		rayParam.FilterType = Enum.RaycastFilterType.Blacklist

		rayParam.FilterDescendantsInstances =  list

		local raycastResult = workspace:Raycast(v.PrimaryPart.Position, v.PrimaryPart.Position - Vector3.new(0, 100, 0), rayParam)


		if raycastResult then
			local ObjectPosition = raycastResult.Position
			local Object = raycastResult.Instance
			
			if Object then
				if ObjectPosition then
					v.PrimaryPart.CFrame = v.PrimaryPart.CFrame:Lerp(CFrame.new(HumanoidRootPart.CFrame.p + Vector3.new(x,0,z)) * CFrame.Angles(0,chrAngle,0), LERPH_ALPHA)
					
					v.PrimaryPart.CFrame = CFrame.new(v.PrimaryPart.CFrame.X, ObjectPosition.Y + v.PrimaryPart.Size.Y / 2, v.PrimaryPart.CFrame.Z)
					
					v.PrimaryPart.CFrame = v.PrimaryPart.CFrame:Lerp(v.PrimaryPart.CFrame.p * CFrame.Angles(0,chrAngle,0), LERPH_ALPHA)
				else
					
				end
				
			else

			end
		end
		
		
		
		
	end
end)