Interacting with Dialogs/DialogChoices with an Xbox controller breaks user input

Issue Type: Other
Impact: Very High
Frequency: Constantly
Date First Experienced: 2021-01-21 04:01:00 (-05:00)
Date Last Experienced: 2021-02-25 10:56:00 (-05:00)

Reproduction Steps:

Note: This is on a PC with a keyboard and Xbox controller both plugged in. I am not sure if it occurs on Xbox explicitly or a device that has keyboard + controller. I do not have an Xbox to test this.

  1. Create a dialog tree using Dialog/DialogChoices instances

  2. Interact with the dialog tree while either using an Xbox controller or while having an Xbox controller plugged in.
    This occurs specifically if you can see the (X) to initiate dialog on the bubble.

  3. Move around during the dialog (this causes your movement controls to enter the dialog menu and control it with movement controls - presumably this is intended)

  4. Observe you can no longer move your character using WASD or the joystick after completing a conversation (interestingly enough you can still jump)

Expected Behavior:

You can move your character after the dialog is done.

Actual Behavior:

You are presumably stuck in the dialog menu still, with both controller and keyboard input disabled, as it is possible to navigate the dialog menu using the controller or WASD.


Repro Place File (24.3 KB)

Workaround:

Pressing escape on a keyboard or start on a controller to open the core menu resolves it.

I am getting constant bug reports about this from PC controller users as well as from Xbox users. It’s definitely impacting the ability for controller users to play my games.

The workaround is not viable because it is not intuitive.

More Information:

2 Likes

Hey cloakedyoshi, I tested this on Console again, but this time without the keyboard. The same exact thing occured.

Unfortunately, the menu for it did not fix the issue, so leaving is your only option to fix it.

Resetting character however fixes, but not entirely, as you have to reset again once you get into another NPC dialog again.

1 Like

For ease I have supplied a minimal repro place file and minimal video on the original post.

I’ve tried a hacky solution to solve this bug, but I’ve yet to get it to work:

--this is a LocalScript placed in StarterPlayerScripts
local NPCs = workspace:GetDescendants() --requires optimization later
for k, v in pairs(NPCs) do
	if v:IsA("Dialog") then --note that the dialog is set to MultiplePlayers, meaning it is treated locally
		v.Changed:Connect(function(property)
			if property == "InUse" then
				if v[property] == false then
					print("Unselected")
					game:GetService("GuiService").SelectedObject = nil
				end
			end
		end)
	end
end

It prints but it does not unbreak/unlock user movement input.

Thanks for the report! We’ve filed a ticket to our internal database and we’ll follow up when we have an update for you.

3 Likes

Yes this is what happens to my xbox player’s it’s a real pain thanks for reporting this

1 Like