Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Mouse location not accurate on surfacegui?

Asked by 3 years ago
Edited 3 years ago

Hi. I have this whiteboard that i am making currently for a game. I need it to work like this: The client gets mouse location on surfacegui. What i mean by this is what the udim2 is of the position of the mouse on an surfacegui. You will see what i mean later.

Then the client sends this info to the server, which makes the "dot" used to draw on the whiteboard.

Basically i have problems converting the mouse position to an udim2 position on an surfacegui.

What the problem is is that the position of the mouse converted into udim2 on a surfacegui is not accurate. Ive already figured out how to do the interaction between client and server. Take a look:

https://imgur.com/a/yJb8RrD

The red do is where it is supposed to draw, and the black dot is where it draws. I have tried several solutions to solve this problem. I tried using a button and using the MouseMoved function, but for some reason that doesnt work. Like i said, the system works, the cursor position to surfacegui udim2 does not work.

And YES, I have tried using WorldToScreenPoint but THAT does not even work!

Local script:

local c = false
local board = script.Parent.Adornee
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

local remote = script.Parent:FindFirstChild("MakeDot") or script.Parent:WaitForChild("MakeDot")

mouse.Move:Connect(function()
    if c then --This works, please ignore this
        print("ok")

        remote:FireServer(Vector2.new(mouse.X, mouse.Y), mouse.Target)
    end
end)

mouse.Button1Down:connect(function()
    c = true
end)

mouse.Button1Up:connect(function()
    c = false
end)

Server script:

local remote = script.Parent:FindFirstChild("MakeDot") or script.Parent:WaitForChild("MakeDot")

remote.OnServerEvent:Connect(function(player, pos, target)
    local config = script.Parent.Adornee.Parent.Configuration
    local billboard = script.Parent.Adornee.SurfaceGui
    if target then --This works, please ignore this
        if target.Name == "WhiteBoard" then --This works, please ignore this
            if config.Owner.Value == player then --This works, please ignore this
                local image = Instance.new("ImageLabel", billboard.Frame.Container)
                image.Position = UDim2.new(0, pos.X, 0, pos.Y)
            end
        end
    end
end)
0
Can someone answer this? hasanchik 49 — 3y
0
So the red dot is not where the mouse cursor at? Xapelize 2658 — 3y
0
yes hasanchik 49 — 3y
0
@Xapelize The red dot is where it is supposed to go hasanchik 49 — 3y

Answer this question