Some things I’d really like to see in Unity

First an obvious one: The new GUI system. But enough people are going on about that already. Some less obvious stuff:

The ability to check if a rigidbody will be colliding when at a certain position.

A WillCollide type method for rigidbodies would be nice. When wanting to position something at a certain place, it’s currently impossible to universally determine if it will be free of collisions without actually moving it there and waiting one frame for physics to simulate, then checking an OnCollision method. The lack of this means that I can only use cuboid, non-rotated colliders on the Scraps Build screen, and checking takes longer than it should.

There are several methods that provide this functionality already for basic shapes – Physics.Spherecast, Plysics.CapsuleCast – but none for arbitrary rigidbodies. SweepTest could be used with a very small distance except that it ignores the collision if it starts inside something. CheckSphere is fine except it only checks spheres!

For un-rotated cuboid shapes, the bounds can be manually compared with an AABB test against other cuboid colliders but this is tedious and slower than the proper physics system, and rotated cubes are out as Bounds doesn’t handle rotation.

I suggest either a method that lets us check for collisions at a certain position:
Vector3 targetPosition = new Vector3(4, 6, 9);
bool result = myRigidbody.WillCollide(targetPosition);

or an instantaneous way of checking for collisions instead of waiting for the next frame:
Vector3 curPosition = myRigidbody.position;
Vector3 targetPosition = new Vector3(4, 6, 9);
myRigidbody.position = targetPosition;
bool result = myRigidbody.IsColliding();
myRigidbody.position = curPosition;

Per-platform settings for audio.
We have this for textures, why not for audio? Per-platform .ogg bitrate settings. For instance in Skylight I had a lot of audio files, and I’d have liked to sacrifice a little bit of quality in the web version to lower the file size, while not compromising on the downloadable version. As it stands you’d have to go through and manually change every file between builds. Which brings me to the next thing…

Multi-object editing for audio.
Group editing has been supported for images since Unity 3.5, but it’s still not supported for audio. Here’s an editor script that lets you group edit in the meantime.

Nested Prefabs
This is another one that’s also a popular topic, but would also be great to have. I have to instantiate the wheels on my vehicles programmatically so that I don’t break their prefab instance by putting them inside the chassis prefab. Argh!

Exposed Input Manager settings
Not having this made making a custom input manager for Scraps way more time-consuming. The 1138 votes on the Unity Feedback post says it at least as well as I could. The Input Manager is way to much of a black box.

Graphics settings all exposed
Why can I change most, but not all of the graphics settings in code? Why can I set shadow distance, but not shadow type for instance?

I still think Unity was definitely the best choice for this project, and it’s a great engine overall.

Bookmark the permalink. Both comments and trackbacks are currently closed.

One Comment

  1. Malky
    Posted July 16, 2013 at 5:07 pm | Permalink

    Totally agreed about nested prefabs.