Handles and ArcHandles unable to be interacted with

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.

3 Likes

experiencing this too, the MouseDrag event is not firing, and is really annoying, would love to see a fix!

edit: i have appeared to make it work again, by putting it directly in the startergui
image

4 Likes

This issue could be caused because…

[ 1 ] : Wrong Script Architecture

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.

2 Likes

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.

2 Likes