How to make the part move or scale by the "handles"?

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I’ve heard about the “Handles” which can make the:

    and you can make the part scale or move but.

  2. What is the issue? Include screenshots/videos if possible!
    I don’t know how to script this thing “Handles” and how to make it scale the part by dragging it or moving it.

  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I looked everywhere but I can’t find anything how to make it.

Thanks for any response, Bye!

For handles to be interactive, they must be parented to a player’s PlayerGui or the CoreGui.

To script part movement, use handle.MouseDrag event, it will provide the face - direction and distance.
If you are still having problems with scripting, look into source code of already existing stuff, such as F3X, SBS

1 Like

I tried looking in the Source of F3X but I don’t find anything it’s too complicated I think there can be code for a few lines. I also put the handles in the StarterGui and adorned it to the part. That now shows a little lighter dot if you hover over it but, I still cannot find any way to make the part move by dragging it.

To make parts scale you can use Part:Resize().
For both scale and move I would recommend deciding the result using the mouse x and y.

the reason you could not find the code in F3X is most likely because F3X does not use actual Handles Apparently. I was looking through the code and found two files called “Handles” and “Arc Handles” and within them it appears they are creating artificial Handles. here is the code used for making one “Handle”

local Handle ='ImageButton')
        Handle.Name = Side.Name
        Handle.Image = 'rbxassetid://2347145012'
        Handle.ImageColor3 = AxisColor
        Handle.ImageTransparency = 0.33
        Handle.AnchorPoint =, 0.5)
        Handle.BackgroundTransparency = 1
        Handle.BorderSizePixel = 0
        Handle.ZIndex = 1

        -- Create handle dot
        local HandleDot = Handle:Clone()
        HandleDot.Active = false
        HandleDot.Size =, 4, 0, 4)
        HandleDot.Position =, 0, 0.5, 0)
        HandleDot.Parent = Handle
        HandleDot.ZIndex = 0