hello,
after making THREE posts and not getting help on any of them this is my last attempt at making a post so hopefully, someone can help me out here
I’m making a slenderman game on Roblox and I’m trying to get the static GUI to work when slender is being looked at. However the GUI can still activate through walls for some reason even though I scripted the raycast stuff.
here’s my code (the whole thing lol):
local camera = workspace.CurrentCamera
local mouse = game.Players.LocalPlayer:GetMouse()
local p = game.Players.LocalPlayer
local c = p.Character or p.CharacterAdded:Wait()
local VisCheck = function(Obj)
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
raycastParams.FilterDescendantsInstances = {game.Players.LocalPlayer.Character}
raycastParams.IgnoreWater = true
local raycastResult = workspace:Raycast(camera.CFrame.Position, CFrame.new(camera.CFrame.Position,Obj.Position).LookVector*5000, raycastParams)
if raycastResult ~= nil then
if raycastResult.Instance:IsDescendantOf(Obj.Parent) then
if Obj.Parent.Humanoid.Health > 0 then
return true
end
else
return false
end
end
return false
end
local StartUITrack = function(Obj)
local worldPos = Obj.Position
local pos, isOnScreen = camera:WorldToScreenPoint(worldPos)
local fixedposx = pos.x
local fixedposy = pos.y
local IsInLib,num = false, nil
if isOnScreen then
if VisCheck(Obj)== true then
return true
end
else
end
return false
end
while wait() do
local mag;
local range = game.Lighting.FogEnd - 2;
local cansee = true
local DummyHead = workspace.Slenderman["Meshes/torso (3)"]
coroutine.wrap(function()
while wait() do
mag = (c.Torso.Position - DummyHead.Position).magnitude;
end
end)()
local WG = workspace.Slenderman
coroutine.wrap(function()
while wait() do
local Position, CanSee = camera:WorldToScreenPoint(workspace.Slenderman["Meshes/thehead"].Position)
if CanSee and mag <= range and cansee then
local StaticMain = script.Parent.StaticGUI
local Static1 = StaticMain.Static1
local StaticSound = script.StaticSound
StaticSound.Playing = true
StaticSound.Looped = true
StaticSound.Volume = 1 /mag * 2
StaticMain.Enabled = true
Static1.Visible = true
Static1.ImageTransparency = 0.50 * mag / 8.55
wait(0.1)
Static1.ImageTransparency = 0.75 * mag / 8.55
wait(0.1)
Static1.ImageTransparency = 0.25 * mag / 8.55
wait(0.1)
Static1.ImageTransparency = 0.9 * mag / 8.55
wait(0.1)
else
local StaticMain = script.Parent.StaticGUI
local Static1 = StaticMain.Static1
local StaticSound = script.StaticSound
StaticMain.Enabled = false
StaticSound.Playing = false
end;
end;
end)()
local IsSeen = StartUITrack(WG["Meshes/thehead"])
if IsSeen == true then
end
end
any help is greatly appreciated. thank you in advance