- Home /
Getting analog input values from multiple controllers
Hi all
I'm pretty happy with being able to check controller input by doing:
Input.GetKey("joystick 1 button 0");
But I'm completely thrown off by accessing analogue input.
Can this only be read from the virtual inputs? How can you specify which controller to read?
Thanks!
Answer by dood_legacy · Jun 09, 2012 at 07:33 PM
var speed : float = 10.0;
var rotationSpeed : float = 100.0;
function Update () {
// Get the horizontal and vertical axis.
// By default they are mapped to the arrow keys.
// The value is in the range -1 to 1
var translation : float = Input.GetAxis ("Vertical") * speed;
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;
// Make it move 10 meters per second instead of 10 meters per frame...
translation *= Time.deltaTime;
rotation *= Time.deltaTime;
// Move translation along the object's z-axis
transform.Translate (0, 0, translation);
// Rotate around our y-axis
transform.Rotate (0, rotation, 0);
}
Hey dood, thanks for replying but that doesn't answer either of my questions.
Answer by Jibran-I-Syed · Sep 06, 2013 at 06:20 AM
Axis input has to be manually defined in Unity's Input Manager (Edit -> Project Settings -> Input) for as many controllers you want to support. More information about the Input Manager can be found here.
In each axis defined in the Input Manager, you can define which joystick the axis responds to by the "Joy Num" property. The the picture above, the manually defined axis "RightAnalog_horizontal" had a JoyNum of "Joystick 2". It only responds to the second controller.
To use this in code you would need to do something like this:
float axisValue = Input.GetAxis("RightAnalog_horizontal");
Your answer
Follow this Question
Related Questions
Analog stick control 1 Answer
Circular Analog Input? 1 Answer
Setting multiple jump buttons 3 Answers
Touch input 1 Answer
Read analog stick input without using the Input Manager 1 Answer