I’m making UI connecting system.
Watch this video then you can understand all
It’s working successfully when connecting to x direction but when try to connect Y direction then it makes bug.
code:
local OConnection = script.Parent.OConnection
local Main = script.Parent.Parent.Parent
local UserInputService = game:GetService("UserInputService")
local ConnectionModel
local RunService = game:GetService("RunService")
local Run
OConnection.InputBegan:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
local ConnectVector = nil
task.wait()
local Connection = game.ReplicatedStorage.Connection:Clone()
Connection.Parent = Main
--Connection.Position = OConnection.Position
ConnectionModel = Connection
local OCP = OConnection.AbsolutePosition
local MP = Main.AbsolutePosition
local RelativePosition = OCP-MP
Connection.Position = UDim2.new(0,RelativePosition.X+20,0,RelativePosition.Y+5)
Run = RunService.RenderStepped:Connect(function()
local Mouse = UserInputService:GetMouseLocation()
--Connection.Size = UDim2.new((Connection.Position.X.Scale-Mouse.X),0,0,0)
local MouseDisatnce = (UDim2.fromOffset(Mouse.X,Mouse.Y)-Connection.Position)
-- print(MouseDisatnce
if not ConnectVector then
if MouseDisatnce.Y.Offset>=20 or MouseDisatnce.Y.Offset<=-20 then
ConnectVector = "Y"
Connection.Rotation+=90
print("Y")
elseif MouseDisatnce.X.Offset>=20 or MouseDisatnce.X.Offset<=-20 then
ConnectVector = "X"
print("X")
end
end
if ConnectVector == "X" then
print(MouseDisatnce.X,Connection.Size.Y)
Connection.Size = UDim2.new(MouseDisatnce.X,Connection.Size.Y)
elseif ConnectVector == "Y" then
print(MouseDisatnce.Y,Connection.Size.Y)
Connection.Size = UDim2.new(MouseDisatnce.Y,Connection.Size.Y)
end
end)
UserInputService.InputEnded:Connect(function(Input)
if ConnectionModel then
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Run:Disconnect()
ConnectionModel = nil
end
end
end)
end
end)
Fixed by Inventor
Final Code:
local OConnection = script.Parent.OConnection
local Main = script.Parent.Parent.Parent
local UserInputService = game:GetService("UserInputService")
local ConnectionModel
local RunService = game:GetService("RunService")
local Run
OConnection.InputBegan:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
task.wait()
local Connection = game.ReplicatedStorage.Connection:Clone()
Connection.Parent = Main
ConnectionModel = Connection
local RelativePosition = OConnection.AbsolutePosition-Main.AbsolutePosition
local StartPosition = Vector2.new(RelativePosition.X+10,RelativePosition.Y+10)
Run = RunService.RenderStepped:Connect(function()
local Mouse = UserInputService:GetMouseLocation()
local EndPosition = Vector2.new(Mouse.X,Mouse.Y)
local Direction = EndPosition-StartPosition
local axis = (math.abs(Direction.X)>math.abs(Direction.Y)) and Vector2.new(1,0) or Vector2.new(0,1)
Direction = axis*Direction:Dot(axis)
Connection.Size = UDim2.new(0,Direction.Magnitude,0.014,0)
Connection.Rotation = math.deg(math.atan2(Direction.Y,Direction.X))
Connection.Position = UDim2.new(0,StartPosition.X+Direction.X/2,0,StartPosition.Y+Direction.Y/2)
end)
UserInputService.InputEnded:Connect(function(Input)
if ConnectionModel then
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Run:Disconnect()
ConnectionModel = nil
end
end
end)
end
end)