title is self-explanatory, here is what I have so far
NPC Script:
local ServerStorage = game:GetService("ServerStorage")
local PlayerService = game:GetService("Players")
local Debris = game:GetService("Debris")
local SimplePath = require(ServerStorage.SimplePath)
-- Define npc
local Dummy = script.Parent
local humrp = Dummy.HumanoidRootPart
-- Define Events
local HideEvent = workspace.Hide
local EscapeEvent = workspace.Escape
-- Get Path or smth
local Path = SimplePath.new(Dummy)
HideEvent.Event:Connect(function()
local camera = workspace.CurrentCamera
local worldPoint = script.Parent.Torso.Position
local vector, onScreen = camera:WorldToScreenPoint(worldPoint)
local screenPoint = Vector2.new(vector.X, vector.Y)
local player2DPosition = UDim2.new(screenPoint.X / camera.ViewportSize.X, 0, screenPoint.Y / camera.ViewportSize.Y, 0)
local depth = vector.Z
if screenPoint.X < camera.ViewportSize.X * 0.5 then
-- Player is on the left side, set X_Scale to 0
local edgePosition = UDim2.new(0, 0, player2DPosition.Y.Scale, player2DPosition.Y.Offset)
Path:Run(edgePosition)
else
-- Player is on the right side, set X_Scale to 1
local edgePosition = UDim2.new(1, 0, player2DPosition.Y.Scale, player2DPosition.Y.Offset)
Path:Run(edgePosition)
end
--[[local length = 500
local unitRay = camera:ScreenPointToRay(vector.X, vector.Y)
local ray = Ray.new(unitRay.Origin, unitRay.Direction * length)]]
end)
EscapeEvent.Event:Connect(function()
--- Nothing as of now
end)
StarterCharacterScript (normal script):
local npc = game.workspace:WaitForChild("Dummy")
local character = script.Parent
local HideEvent = workspace.Hide
local EscapeEvent = workspace.Escape
while task.wait() do
local npcToCharacter = (npc.Head.Position - character.Head.Position).Unit
local npcLook = character.Head.CFrame.LookVector
local dotProduct = npcToCharacter:Dot(npcLook)
if dotProduct > .3 and dotProduct < 0.55 then
--- When being looked at
HideEvent:Fire()
workspace.Baseplate.Color = Color3.new(1, 0.52549, 0.52549)
elseif dotProduct > .55 then
EscapeEvent:Fire()
workspace.Baseplate.Color = Color3.new(1, 0, 0)
else
npc.AI.Enabled = true
workspace.Baseplate.Color = Color3.new(0.631373, 1, 0.54902)
end
end