- Home /
Six Axis support in Unity
Is there any way to enable sixaxis support for PS3 controllers on PC in Unity. Either via plugin or native support. I've googled around a little bit and didn't find anything (I could also have done an insufficient job). Thanks!
Answer by LoganPark · Oct 23, 2013 at 03:17 AM
On OSX, at least, it seems to plug in and work fine, and wirelessly as well. I used the following basic script (csharp, but a JS port would be easy) to map out the buttons. Put this code block into void OnGUI()...
GUI.Label( new Rect(20,20,400,20), "Active Joystick: " + Input.GetJoystickNames()[0] + ".");
float yOffset = 40.0f;
int buttonIndex = 0;
if(Input.GetKey(KeyCode.JoystickButton0)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Select");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Select");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton1)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Left Joystick Press");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Left Joystick Press");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton2)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Right Joystick Press");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Right Joystick Press");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton3)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Start");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Start");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton4)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: D-Pad Up");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: D-Pad Up");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton5)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: D-Pad Right");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: D-Pad Right");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton6)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: D-Pad Down");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: D-Pad Down");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton7)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: D-Pad Left");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: D-Pad Left");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton8)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Left Trigger");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Left Trigger");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton9)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Right Trigger");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Right Trigger");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton10)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Left Bumper");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Left Bumper");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton11)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Right Bumper");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Right Bumper");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton12)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Green / Triangle / Upward");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Green / Triangle / Upward");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton13)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Red / Circle / Rightward");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Red / Circle / Rightward");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton14)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Blue / X / Downward");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Blue / X / Downward");
}
yOffset += 20.0f;
buttonIndex++;
if(Input.GetKey(KeyCode.JoystickButton15)) {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " on: Pink / Square / Leftward");
} else {
GUI.Label (new Rect (20, yOffset, 500, 20), "Joy button " + buttonIndex.ToString() + " off: Pink / Square / Leftward");
}
yOffset += 20.0f;
buttonIndex++;
GUI.Label (new Rect (20, yOffset, 500, 20), "Left Thumbstick: " + Input.GetAxis("L_XAxis_0").ToString("f1") + "," + Input.GetAxis("L_YAxis_0").ToString("f1"));
yOffset += 20.0f;
GUI.Label (new Rect (20, yOffset, 500, 20), "Rite Thumbstick: " + Input.GetAxis("R_XAxis_0").ToString("f1") + "," + Input.GetAxis("R_YAxis_0").ToString("f1"));
} // End Playstation 3 controller
Very best of luck to you. Note that you would need to define L_YAxis_0 and L_YAxis_0 and L_XAxis_0 and R_XAxis_0 in the Edit --> Project Settings --> Input editor (Joystick axes).
Your answer
Follow this Question
Related Questions
Xbox 360 Developing 2 Answers
Multiple controller buttons Xbox 360 & PS3 different controllers 1 Answer
Unity to PS3 or 360 2 Answers
PS3 controller, bluetooth and Unity. 0 Answers