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!