Hi i am trying to make to npc detect a player in sight and once player is behind the wall the npc can't see him. Everything works fine expect raycast please help me.

local RunService = game:GetService("RunService")

local npc = game.Workspace.NPC
local Character = game.Players.LocalPlayer.Character

RunService.RenderStepped:Connect(function()
	local npcToCharacter = (Character.Head.Position - npc.Head.Position).Unit
	local npclook = npc.Head.CFrame.LookVector
	local dotproduct = npcToCharacter:Dot(npclook)
	local detectRay = Ray.new(npc.Head.Position, (Character.Head.Position - npc.Head.Position).Unit * 5000)
	local hit , position = game.Workspace:FindPartOnRayWithIgnoreList(detectRay, (npc))
	if hit == Character then
	if dotproduct > 0.5 then
		workspace.Baseplate.BrickColor = BrickColor.new("Medium red")
	else
		workspace.Baseplate.BrickColor = BrickColor.new("Medium green")
		end
		end
end)