UserInputService.TouchTap and TouchTapInWorld are inconsistent/unreliable across different mobile devices.

EDIT: issue randomly resolved itself for the user. I pushed a quick update that removed the GPE check and they said the issue was still happening, but a few minutes later they said it was working despite no changes being made. If GPE was the cause then this is still an issue as it is giving inconsistent results across both accounts.

I’ve had bug reports of UserInputService.TouchTapInWorld not working properly for users in my game, but I have not been able to reproduce this issue on my phone (iPhone 16). So far all of these reports are coming from Android devices and the most recent one has been from a user using a Vivo phone.

The user gave me the following details:

  • They are on a Vivo phone running Android 15 (user says they are unable to provide the exact device model).
  • Issue only occurs on one of their accounts (they swap between alternative accounts frequently).
  • This issue did not happen yesterday (I have not published a new version of the game since last weekend).

Video of the problem:

I’ve left the account details of the user as well as a link to the discord forum post where this issue was reported to me in the private comments for this report.

If you would like to try reproduce this issue in game the link is here. And the code I am using to detect inputs is here:

local function SetHover(PointerLocation: Vector3)
		local RayInfo = Camera:ViewportPointToRay(PointerLocation.X, PointerLocation.Y)
		
		local Cast = workspace:Spherecast(RayInfo.Origin, 0.5, RayInfo.Direction * 100, CAST_PARAMS)
		--Visualiser:SphereCast(RayInfo.Origin, 0.5, RayInfo.Direction * 100, CAST_PARAMS)
		
		if not Cast then
			HideHover()
			return
		end
[...]
end
UserInputService.TouchTapInWorld:Connect(function(TouchPosition, GPE)
		if GPE then
			return
		end
		
		SetHover(TouchPosition)
	end)

A private message is associated with this bug report

1 Like

Thank you for your report. It sounds like this resolved itself? Do you have any details on what you mean by “GPE check”.

In the code snippet I provided I am doing a check for the GPE (GameProcessedEvent) parameter that is passed through the event callback. This argument is supposed to be true if the user is interacting with another instance like a TextBox. Removing this check may have resolved the problem but as I stated in the edit I’m not 100% sure if it did as the user reported the same issue happening after I’d pushed the change and then shortly after said it was working again (they may have done something else like restart the client or reinstall the app?). Also this problem still only started occuring today (potentially yesterday, I assume after the weekly client update) and no update was pushed to the game in this time period.

I’ve just had another Android user report this issue randomly happening while playing. In all cases this issue has been limited to Android and has started while the user was playing, and has continued into new sessions. It seems unrelated to GPE.

1 Like