Lately I have been working on an extension for Unity3D.


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:

Categorized in: Projects, Uncategorized, Unity
Add a comment