Radial Controller Deadzones

Analog controls are not as smooth as tilt controls. They jump all over the place.

Just putting thresholds – a rudimentary deadzone – on thumbstick axes will not do.

This article sums up the reasons why, and offers solutions in the form of radial deadzones to avoid cross ‘+’ shaped deadzones.

The article tests a deadzone against the magnitude of the thumbstick’s [x,y] vector. Where:

(magnitude) |x,y| = √x2 + y2

We use a 3-component vector. To wit:

if (√((port-starboard)2 + (up-down)2 + (fore-aft)2) > deadzone) {
move();
}

Buttons are fine. They read as either ‘1’ or ‘0’.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s