A Note About Xbox Controllers
Xbox 360 controllers have the unfortunate "feature" of having both triggers being mapped to the same axis on Windows. This means that if you push in both triggers at the same time, they cancel each other out and Unity can't tell that you're pushing either trigger. Thankfully, the triggers are also (sometimes) mapped separately on different axes, though the driver may need to be installed on Windows 7 or older for this to work.
Even so, there are two further complications:
Multiple Xbox Controllers
If more than one Xbox 360 or Xbox One controller is connected, the triggers may or may not work properly, or may or may not be mapped to these separate axes as previously described. This is an issue with Unity itself, not a flaw in cInput. Recent versions of Unity have taken steps to correct this issue, but some problems may still exist. More information about this problem and how it has affected other custom input managers for Unity can be found here: Details on the Xbox 360 Controller Bug in Unity.
Different Gamepad Mappings Per OS
Another complication with using Xbox 360 or Xbox One controllers is that the buttons and axes are mapped differently depending on the OS. In some cases, the Xbox One controller has different mappings from the Xbox 360 controller on the same OS! This makes it difficult to set up a single default configuration which just works for various OSes and platforms.
The Keys
class attempts to assist with this, by providing special entries specifically for the Xbox buttons and joysticks for up to four controllers. These entries follow a similar format as follows:
For the second, third, or fourth Xbox controllers, simply replace the Xbox1
part at the beginning of the above entries with Xbox2
, Xbox3
, or Xbox4
respectively.
Additionally, if you want to accept input from any Xbox controller, simply leave the number out entirely. For example, using Keys.XboxA
will look for input from any Xbox controller's A
button, without regard to the order in which the controllers are connected. This is very useful for single player games where you would like the player to be able to pick up any controller and play. But be warned that this can cause conflicts in multiplayer games where two players' inputs would interfere with each other.
Last updated