Summary
Virtual Pointer introduced in 41.00 doesn’t seem to work properly on Controller. It works fine on PC and Mobile, but controller users can’t click UI buttons when the widget is using ui_input_mode.None.
Using ui_input_mode.All isn’t really a workaround either, since it consumes player input and this specific input actions isn’t designed specifically for UI interaction. This makes it difficult to use Virtual Pointer with interactive UI on Controller.
Please select what you are reporting on:
Unreal Editor for Fortnite
What Type of Bug are you experiencing?
Assets
Steps to Reproduce
- Create a widget with one or more clickable buttons.
- Add it to
player_ui using ui_input_mode.None.
- Add a Touch Mapping to the player.
- Test the widget on PC, Mobile, and Controller.
- Move the Virtual Pointer over a button and try to click it using a Controller.
Expected Result
Controller users should be able to interact with buttons just like PC and Mobile users can.
Observed Result
PC: Works.
Mobile: Works.
Controller: Virtual Pointer moves around the screen and I can interact with my weapon as you can see in the video, but buttons cannot be clicked or interacted with.
Platform(s)
Consoles or PC with Controller connected
Upload an image
Additional Notes
This appears to be because the Virtual Pointer on Controller is not being treated as a true cursor for widget interaction. The feature already works correctly on PC and Mobile, so adding proper controller interaction would make the Virtual Pointer a much more useful cross-platform UI solution. Since its in experimental release, I do hope its already in works.
Virtual pointer also does not interact with UI buttons on PC and Mobile either. They are for a completely different purpose unrelated to this…
What it happens, is that on Computer and Mobile you are literally (also) clicking with your finger on your mouse. And that would fire the button input even with the virtual pointer disabled… So, it is firing the buttons due to the actual click and not due to the pointer interacting with them.
You can still make “virtual widgets” on screen, even with this tho. From widgets (not needing to be exactly buttons) and checking coords, to in-world objects too
Virtual Cursor and UI are independent. and that’s why one of the first comments that I said when we got this, is that would be cool if we had methods like SetCursorPosition() for consoles (on mouse and mobile we can “jump-click”, but console can’t, need to move slowy to the target pos). And also a way to “limit/constrain” the usable area of the cursor while enabled (to not be always full screen for no reason)…
If it interacted with buttons, scenarios like these would be impossible to do properly, since buttons would detect duplicated inputs (from click and cursor) on some platforms but others not:
Red = interactable with the virtual cursor
Blue = Interactable with the UI inputs
Both can be working together, not excluding one or another, but still independently.
I think that the best solution if wanted to give the ability of virtual cursor to interact with UI Widgets, would be adding a new widget type to the UMG Editor, that receives input from the virtual button clicks.
This would make a opt-in system that would not break different usages or cause issues. Plus giving control to the virtual cursor to interact with this specific widget type…
Now, THIS that was said is a bug for me:
(From @supreeeeemeeeee ):
Using ui_input_mode.All isn’t really a workaround either, since it consumes player input and this specific input actions isn’t designed specifically for UI interaction. This makes it difficult to use Virtual Pointer with interactive UI on Controller.
There is no reason for the UI when consuming input not work with the virtual cursor, both SHOULD work together, as my past message shows an example where it is a valid workflow.
Virtual Cursor and Input-Consuming UI should be able to be used at same time without any issues. These are the expected usages:
For Consoles:
- Left Joystick/Arrow Buttons on controller + A (Xbox/Switch) / X (Playstation) to navigate around and interact with the UI Widgets
- Right Joystick on controller + Right Trigger to navigate around and interact with Virtual Pointer.
For Computer/Mobile:
- Touch and Mouse Click acting for both at same time, there is no conflicts on the usage between interacting with the UI Widgets or Virtual Pointer on this platform
FORT-1115681 has been created and its status is ‘Unconfirmed’. This is now in a queue to be reproduced and confirmed.