← Back to blog character controllers and input

Unity Input System: Input.GetAxis

by Michael Sacco Jan 25, 2024
The cover for Unity Input System: Input.GetAxis

In this article, we’ll talk about another major method in Unity’s Input class – the GetAxis method. This is an essential method if you want to accept player input for your game. As a developer, you must be comfortable using Unity’s input APIs to accept and respond to player input in order to create interactive games.

What method do I use to get the virtual axis?

You will use the Input.GetAxis method to retrieve the value of a virtual axis in Unity. This is an essential method in the Input class. Remember to normalize player input.

📄 Resources:

What is a virtual axis in Unity?

A virtual axis is a property that enables you to accept input from an input device in your project. Keyboards, mice, joysticks, and touch screens are all examples of input devices. Each project in Unity has several input axes by default. The axis values can be 1 or -1 for the joystick and keyboards. However, the axis values for a mouse can be greater than 1 and smaller than -1 if the user moves the mouse quickly. The neutral position is always 0.

📄 Resources:

How do I configure a virtual axis?

You can configure a virtual axis names in the Input Manager. To open the Input Manager window, follow these steps:

  1. In your menu bar, click Edit > Project Settings.
  2. In the Project Settings window, click Input Manager in the side pane.

How to add a virtual axis in Unity?

To add a virtual axis in Unity, you just have to increase the value of the Size field in your Input Manager. The new axis will automatically inherit the properties of the previous axis in the list.

How to remove a virtual axis in Unity?

To remove a virtual axis, follow these steps:

  1. In your Input Manager, right click on the axis you want to delete.
  2. Click Delete Array Element to remove that virtual axis.

Alternatively, you can decrease the value of the Size field in the Input Manager. However, note that decreasing this value will remove the last element from the list, which may not be the axis you intend to remove.

How to copy a virtual axis in Unity?

To Copy a virtual axis, follow these steps:

  1. In your Input Manager, right click the axis you want to copy.
  2. Click Duplicate Array Element to copy that virtual axis.

How to map a virtual axis to a control?

To Map a virtual axis to a control, enter its name in the Positive Button or Negative Button property. You can find that in the Input Manager.

How to use the Input.GetAxis method in Unity?

You can use the get axis method to access virtual axes from scripts using the axis name. Here’s an example:

float horizontalInput = Input.GetAxis("Horizontal")

The above code queries the current value of the Horizontal axis and stores it in a variable.

float verticalInput = Input.GetAxis("Vertical")

The above code queries the current value of the Vertical axis and stores it in a variable.

What if more than one axis has the same name?

If more than one axes have the same name, the query returns the axis with the largest absolute value. This enables you to assign more than one input device to an axis name.

How do I customize input axis names?

You can customize input axis names in the Input Manager. This can be found on your Project Settings tab in the Edit tab.

How to use the input obtained from the GetAxis method?

After querying the value of an axis and storing it in a variable, what’s the variable used for?

You can use the `transform.Translate` method in conjunction with the input from the Horizontal and Vertical axes to move a GameObject forward, back, left, or right.

Here’s an example:

transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime);

In this example, we use `Time.deltaTime` to ensure that the GameObject moves at a consistent rate over time, regardless of the game’s frame rate.

Apart from the transform.Translate method of the transform class, you can also use the transform.Rotate method to rotate a GameObject about a particular axis.

Here is an example:

transform.Rotate(0, horizontalInput * Time.deltaTime, 0);

The above code rotates the GameObject around the y-axis.

📄 Resources:

Conclusion

You are now an expert in using the Input.GetAxis method. With this guide, you can create, edit, and delete virtual axes in your project. Moreover, you can use the virtual axis to accept and respond to player input. Nice.

Continue reading

Non-static method requires a targetHow to make a countdown timer in UnityPricing Strategy for Indie Game DevelopersUnity: How to Change Your SkyboxHow to add Friction to a Rigidbody in UnityUnity Standard Assets: The Essential GuideTop 10 Recent Games Developed with UnityUnity Sprite MasksHow to move or copy a Unity projectThe Ultimate Guide to Sun and Moon Positioning in Super Simple Skybox for Unity

Build your game with OccaSoftware

Learn on the go. Try OccaSoftware for free, and explore all the tools and assets you need to start, build, and launch your game.

Start now

Try OccaSoftware for free, no commitment required.