Lately I have been working on an extension for Unity3D.
Why?
I tried to make a 2D platformer game and I quickly became frustrated with the amount of effort necessary to connect objects.
Here's a few gifs to express my main issues:
When you create a joint, you need to tweak the values in the inspector before being able to use the handles:
You need to move the connected anchor manually by hand to align it with the main anchor:
There's no visual feedback regarding when you can interact with the interface, unless you click:
And so on...
In order to prevent myself from going crazy, I decided to get rid of these problems. Then I would be able to work on the game itself!
My main goal is to better the user experience of game developers (including myself).
I have taken Nielsen's 10 usability heuristics for user interface design as a guide to help me develop the extension.
The improvements I have made are as follows:
Dynamic cursor icons and tooltips:
This is one of the most useful additions I have done, as it reduces a lot of uncertainty about the system status.
You now know when you can interact with the interface, and what they will do.
The cursor changes to a move symbol when your actions will move the handle, or a rotation symbol when your actions will rotate the handle.
When you start dragging, the icon changes slightly, that's great instant feedback!
I also highlight which area is interactive.
Context menus:
When you right-click a handle, a context menu pops up, and lists relevant options, depending on the Joint type.
Anchor Locking
Joints have anchors on the bodies that they want to connect
Sometimes, when you move one anchor around, the other anchor, or some other property of the joint needs to be configured
Anchor locking automates the unnecessary repetition in this process
Customizable visual handles:
The user can customize the size of the handles, making them larger or smaller, depending on their preferences
The graphics of the handles can be easily replaced
And more:
Drag-drop object references onto the handles to connect
Hold shift to show anchor locking buttons
Hold control or command to have the anchor snap to points of interest
And even more! But I'll let you discover the rest ;)
Here's the GitHub repository for it: https://github.com/toxicFork/Unity-2D-Joint-Editors