How do I make an exit thing?

local function DrawHit(position, color)
	local part = Instance.new("Part")
	part.Position = position
	part.Size = Vector3.one * 0.3
	part.BrickColor = color
	part.Shape = Enum.PartType.Ball
	part.Anchored = true
	part.Parent = workspace
end

local function oppositeRaycast(origin: Vector3, direction: Vector3, result: RaycastResult|Instance): (RaycastResult?, RaycastResult?)
	local params = RaycastParams.new()
	params.FilterType = Enum.RaycastFilterType.Whitelist
	params.FilterDescendantsInstances = { typeof(result) == "Instance" and result or (result :: RaycastResult).Instance }

	local newOrigin = origin + direction
	local newDirection = origin - newOrigin
	local result = workspace:Raycast(newOrigin, newDirection, params)

	return result
end

local function twoWayRay(origin: Vector3, direction: Vector3, params: RaycastParams?)
	local result = workspace:Raycast(origin, direction, params)
	return result, result and oppositeRaycast(origin, direction, result.Instance)
end


local origin = script.Parent.Position
local direction = script.Parent.CFrame.LookVector * 100

local result1, result2 = twoWayRay(origin, direction)

if result1 then
	local bColor = BrickColor.Random()
	DrawHit(result1.Position, bColor)
	DrawHit(result2.Position, bColor)
end
1 Like

I finally just finished implementing 5uphi’s script, and it works perfectly, thanks!