Context action bindings no longer fire when ProximityPrompt is visible

Reproduction Steps
Open the place file and observe the broken behavior.

ProximityPrompt.rbxl (39.6 KB)

Expected Behavior
I expect context action bindings to fire regardless of whether a ProximityPrompt is visible or not. Such has been the behavior since ProximityPrompts were originally rolled out.

I also expect Roblox to not randomly push breaking changes to their systems with no warning.

Actual Behavior
After a recent Roblox update, context action bindings will no longer fire if a ProximityPrompt is visible, breaking entire systems of my game.

Issue Area: Engine
Issue Type: Other
Impact: Very High
Frequency: Constantly
Date First Experienced: 2021-07-12 18:07:00 (-04:00)

After further investigation, this issue is directly tied to the ProximityPromptsSinkInput fast flag. Disabling this flag via the Roblox Studio Mod Manager immediately solves the issue.

Thanks for the report. This is related to the discussion here:

We apologize for not making this change in behavior clear ahead of time. It was an intentional change, as we expect user input to prioritize a nearby ProximityPrompt over a global action triggered with ContextActionService.

For a workaround, you should be able to use UserInputService instead of ContextActionService to detect this input even when the input key conflicts with a nearby ProximityPrompt.

In order for us to evaluate supporting the old behavior, can you share the use cases where this behavior is desired? Do you want the ProximityPrompt to trigger, and also another action to happen when the user presses a certain key?

Thanks!

That’s one of my use cases. Another use case which is used by my game is using ProximityPrompts only to display the input prompt but have my own ContextActionService bindings handle input since I have additional that I run in addition to a simple key press. Another use case I have is using ProximityPrompts only for their PromptShown event for event-based distance checking. This is to trigger certain client effects or actions when the player enters the range of the ProximityPrompt.

That being said, I’m fine with this behavior as long as it can be overridden. If this behavior is being kept by default, a solution could be to expose it as a ContextActionService binding which can be unbound by our own scripts, or introduce a SinkInputs property to the ProximityPromptService or individual ProximityPrompts.

Doing this would require me to rewrite all my input code which exclusively uses ContextActionService.

1 Like