Drawing a line between 2 points in 2D Space, Gui

I’ve made this same exact thing in my “Implementing 2D raycasting topic
Here is the code, place it inside a ModuleScript:

local parent = script.Parent.Parent

local function draw(length, frame)
	local line = frame or Instance.new("Frame")
	line.Name = "line"
	line.AnchorPoint = Vector2.new(.5, .5)
	line.Size = UDim2.new(0, length, 0, 2)
	line.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
	line.BorderSizePixel = 0
	line.ZIndex = 1
	line.Parent = parent
	
	return line
end

return function (originX, originY, endPointX, endPointY, frame)
	local origin = Vector2.new(originX, originY)
	local endPoint = Vector2.new(endPointX, endPointY)
	local netVector = endPoint - origin
	
	local length = math.sqrt(netVector.X ^ 2 + netVector.Y ^ 2)
	local midpoint = Vector2.new((origin.X + endPoint.X) / 2, (origin.Y + endPoint.Y) / 2)
	local theta = math.deg(math.atan2(originY - endPointY, originX - endPointX))
	
	local line = draw(length, frame)
	line.Position = UDim2.fromOffset(midpoint.X, midpoint.Y)
	line.Rotation = theta
	
	return line
end

Edit it as you desire

1 Like