Custom XBOX Cursor

I made this in one sitting last night to help make my game more xbox-friendly. You simply just drop it into the StarterGui and then when the player presses select it disables their controls (you must be using the new PlayerScripts layout) & puts a cursor in the middle of the screen which can then be moved around with the left trigger. When it’s hovering over a TextButton, ImageButton, or TextBox it sets GuiService.SelectedObject to that UI. You can then press A and it will click it. This is compatible with MouseButton1Click and Activated and nothing should have to be changed within your UIs.

I have noticed that this can get a little bit laggy with a ton of selectable buttons, however I tried to fix that today by not running collision calculations for UIs that aren’t visible. If you find any more problems or have an easier, less-laggy way to do this please let me know.

Here’s the model: https://www.roblox.com/library/2483911049/XboxMouse

UPDATE 07/05/2019
I’ve made some changes to the way that the UI selector works, thanks to some suggestions from @goreacraft! If you’re currently using this in your game I would suggest you update to the newest version as it will be much less laggier if you have tons of UIs in your game!

34 Likes

Great model!

Although, I feel like this would be better suited in #learning-resources:community-tutorials-resources ! :wink:

4 Likes

Gosh heccin’ darn it!
I just got done coding this for myself!

2 Likes

Well it’s not really a tutorial though. It’s just a model you drop in your game.

1 Like

The category he posted doesn’t link to tutorials, it links to Community Resources. Community Resources is a public subcategory of Learning Resources where both members and non-members can view your items and take them or experiment with what you post. Cool Creations is for showing off your works but only members can see the thread. If you’re looking to share a model, you should move it to the category he linked. If not, it’s fine here.

1 Like

Oh okay, thank you. I have moved it :grin:

2 Likes

Useful for many things, great job! :+1:

1 Like

Thank you! If you have any suggestions to make it better please let me know.

1 Like

Just spent 3+ hours fixing tons of bugs with this system that players in my game have been reporting. This now supports ScrollingFrames, takes into account ClipsDescendants, and I applied TONS of performance fixes. If you use this let me know what you think!

5 Likes

why not use something like this?
https://developer.roblox.com/en-us/api-reference/function/BasePlayerGui/GetGuiObjectsAtPosition
i tried your solution and it fails to detect some buttons i add by scripts, i don’t know why.
i will try and make a version with your cursor movement part in combination with GetGuiObjectsAtPosition
Thank you for your share, as it helped a lot

P.s.: i can share my solution here if you want

3 Likes

Hi, I didn’t notice this was a thing! :o

I’ll update my system to use this tonight sometime. Thanks!

4 Likes

Do you think it is possible for the cursor to detect backack gui frames too? as the cursor just goes under any gui from default roblox inventory ( i think it is not possible as they are part of CoreGui)

Yeah unfortunately any kind of UI inside of the CoreGUI it can’t detect.

i think the proper way to disable and enable the mouse is require(player.PlayerScripts.PlayerModule):GetControls():Disable() not require(player.PlayerScripts.PlayerModule.ControlModule):Disable(), i am not entirely sure about this one, but i thought i might share this to you

Nice work! This will be extremely useful in making my game xbox compatible, I had pretty much given up until now.

I made a fork of this with some extra features I needed in my game (mostly on the fly enabling and disabling). Take a look if you’re interested:

1 Like