In many instances, Handles and ArcHandles cannot be interacted with even though they are visible on the screen and have an Adornee set. This extends to any Handles or ArcHandles instance later used in the character (i.e. if a new Handles instance is made, replacing the old one, and any scripts referencing it are restarted). Respawning a character has a chance to fix it. Videos shown below, I’m working on getting a place repro file working.
Both are children of a LocalScript inside a ScreenGui in StarterGui / the Player’s PlayerGui.
Broken: Video (481.6 KB)
Expected / working: Video (489.4 KB)
Expected behavior
The Handles and ArcHandles can be selected if the mouse hovers over them and clicks.
ArcHandles can only be updated on Client, and need to be Synced to the Server via Client → Communication (RemoteEvents)
[ 2 ] : Wrong Implementation
This Post, by AdvancedDrone, reveals how this is done, He also says you should gain Information by using Models in the ToolBox using ArcHandles, he provides:
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local increment = 5
local lastCFrame = nil
function round(number)
return math.floor((number / increment) + 0.5) * increment
end
function AngleFromAxis(axis, r)
local relativeAngle = math.rad(round(math.deg(r)))
return axis == Enum.Axis.X and {relativeAngle, 0, 0}
or axis == Enum.Axis.Y and {0, relativeAngle, 0}
or axis == Enum.Axis.Z and {0, 0, relativeAngle}
end
script.Parent.ArcHandles.MouseDrag:Connect(function(axis, relativeAngle, delta)
workspace.Part.CFrame = lastCFrame * CFrame.Angles(unpack(AngleFromAxis(axis, relativeAngle)))
end)
script.Parent.ArcHandles.MouseButton1Down:Connect(function()
lastCFrame = workspace.Part.CFrame
end)
[ 3 ] : Obsolete Method
ArcHandles, are quite old and could be deprecated, It would be best of you to make your Own system using Billboards, UIs, or even Parts.
It works around 80% of the time with no problems, but if the Handles/ArcHandles doesn’t register the mouse moving over it (shown in the video, sorry for video format) then that’s not an implementation issue.
I agree doing a custom implementation of Handles/ArcHandles would be much better, I would just prefer not to need to do that for an existing class unless it’s being deprecated.
To register inputs, I believe the handles need to be in a ScreenGui. Additionally, it could also be that code responsible for selecting the part is responsible for the handles disappearing.
It’s neither of these, before the Handles and ArcHandles were descendants of a ScreenGui (inside a LocalScript). The answer above about making them direct children of StarterGui seems to have potentially fixed the problem, but I’m leaving this open for Roblox to fix regardless of where they’re parented.
@Avatar_Korra
Are you still seeing this problem?
if so can you provide an rbxl file that I can look at to reproduce the problem?
Is the problem gone if you put them below StarterGUI and not inside a screenGUI?
The documentation about ArcHandles and Handles states clearly at the top of the page that:
" For handles to be interactive, they must be parented to a player’s PlayerGui or the CoreGui."
So as you’ve found out, putting it below a ScreenGUI does not work, but below the PlayerGUI/StarterGUI does work.
Apologies for bumping this thread, but I came across this because I have been working on handles in my game.
The weird part for me is that in Play Solo and the live game, Handles/ArcHandles etc worked even when parented to a folder inside a module inside my UI.
However they did not work in one specific instance; running a server with clients in Studio. This led to me debugging for hours today to try to figure out why this was happening, assuming it was something to do with the players in Server+Clients being fresh players with no saves…
So I would say that there is still a bug here which is that Handles can incorrectly work in Play Solo/In Game when not parented directly to PlayerGui but only work when parented to PlayerGui in Server+Client mode in Studio.
A very confusing issue that this documentation does not clarify. Thankfully as soon as I did double check the documentation and this thread I managed to get handles working consistently across the board.