Unity supports keyboard, joystick and gamepad input.
Virtual axes and buttons can be created in the Input Manager, and end users can configure Keyboard input in a nice screen configuration dialog.
You can setup joysticks, gamepads, keyboard, and mouse, then access them all through one simple scripting interface. Typically you use the axes and buttons to fake up a console controller. Alternatively you can access keys on the keyboard.
From scripts, all virtual axes are accessed by their name.
Every project has the following default input axes when it’s created:
If you want to add new virtual axes go to the Edit->Project Settings->Input menu. Here you can also change the settings of each axis.
You map each axis to two buttons on a joystick, mouse, or keyboard keys.
Property: | Function: |
---|---|
Name | The name of the string used to check this axis from a script. |
Descriptive Name | Positive value name displayed in the input tab of the Configuration dialog for standalone builds. |
Descriptive Negative Name | Negative value name displayed in the Input tab of the Configuration dialog for standalone builds. |
Negative Button | The button used to push the axis in the negative direction. |
Positive Button | The button used to push the axis in the positive direction. |
Alt Negative Button | Alternative button used to push the axis in the negative direction. |
Alt Positive Button | Alternative button used to push the axis in the positive direction. |
Gravity | Speed in units per second that the axis falls toward neutral when no buttons are pressed. |
Dead | Size of the analog dead zone. All analog device values within this range result map to neutral. |
Sensitivity | Speed in units per second that the the axis will move toward the target value. This is for digital devices only. |
Snap | If enabled, the axis value will reset to zero when pressing a button of the opposite direction. |
Invert | If enabled, the Negative Buttons provide a positive value, and vice-versa. |
Type | The type of inputs that will control this axis. |
Axis | The axis of a connected device that will control this axis. |
Joy Num | The connected Joystick that will control this axis. |
Use these settings to fine tune the look and feel of input. They are all documented with tooltips in the Editor as well.
You can query the current state from a script like this:
value = Input.GetAxis ("Horizontal");
An axis has a value between –1 and 1. The neutral position is 0. This is the case for joystick input and keyboard input.
However, Mouse Delta and Window Shake Delta are how much the mouse or window moved during the last frame. This means it can be larger than 1 or smaller than –1 when the user moves the mouse quickly.
It is possible to create multiple axes with the same name. When getting the input axis, the axis with the largest absolute value will be returned. This makes it possible to assign more than one input device to one axis name. For example, create one axis for keyboard input and one axis for joystick input with the same name. If the user is using the joystick, input will come from the joystick, otherwise input will come from the keyboard. This way you don’t have to consider where the input comes from when writing scripts.
To map a key to an axis, you have to enter the key’s name in the Positive Button or Negative Button property in the Inspector.
The names of keys follow this convention:
The names used to identify the keys are the same in the scripting interface and the Inspector.
value = Input.GetKey ("a");
Note also that the keys are accessible using the KeyCode enum parameter.
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
More information
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising. Some 3rd party video providers do not allow video views without targeting cookies. If you are experiencing difficulty viewing a video, you will need to set your cookie preferences for targeting to yes if you wish to view videos from these providers. Unity does not control this.
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.