Unity解説 Input Managerによるコントローラー操作
Unityで作ったゲームを市販のコントローラのデフォルトの設定で動かしたいんだ。
「JoyToKey」みたいな変換ソフトウェアで、ゲームパッドの入力値をキーボードに変更するとかじゃなくて。。。
そうですね~。
それでは、ゲームパッドの入力規格として、一般的な「Xinput」を使用したコントローラ作りを説明してみましょう。
今回のような操作を設定するためには、Unityの「Input Manager」という機能を使用します。
いちじくちゃんが使っているゲームパッドは、どこのものですか?
Logicoolの無線ゲームパッドのF710!
それでは、そのゲームパッドのボタンの対応を調べてみると以下のようになります。
【Logicool ゲームパッド F710】
| ボタン名 | 名前 | 値 |
|---|---|---|
| 上ボタン | 7th Axis | 1 |
| 下ボタン | 7th Axis | -1 |
| 左ボタン | 6th Axis | -1 |
| 右ボタン | 6th Axis | 1 |
| 上ボタン/右スティック | 5th Axis | -1 |
| 下ボタン/右スティック | 5th Axis | 1 |
| 左ボタン/右スティック | 4th Axis | -1 |
| 右ボタン/右スティック | 4th Axis | 1 |
| 上ボタン/左スティック | 2th Axis | -1 |
| 下ボタン/左スティック | 2th Axis | 1 |
| 左ボタン/左スティック | X Axis | -1 |
| 右ボタン/左スティック | X Axis | 1 |
| Aボタン | joystick button 0 | |
| Bボタン | joystick button 1 | |
| Xボタン | joystick button 2 | |
| Yボタン | joystick button 3 | |
| L1ボタン | joystick button 4 | |
| L2ボタン | 3th Axis,9th Axis | -1,1 |
| R1ボタン | joystick button 5 | |
| R2ボタン | 3th Axis,10th Axis | 1,1 |
| スタートボタン | joystick button 7 | |
| バックボタン | joystick button 6 |
何か「joystick button~」というのは何となく分かるけど、それ以外は、よく分からないね?
「Axis」?「値」?
すごい簡単に言いますと、例えば、ゲームパッドの「上ボタン」を押すと、「7th Axis」というところに「1」の値が入るんですよ。
それなので、「7th Axis」が0より大きかったら、上に行くとか、、、そういうプロブラムを書けばいいんです。
例えば、下のような感じですね。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
void Update()
{
var Axis7 = Input.GetAxis ("Axis 7");
if(Axis7 > 0)
{
var v = new Vector3(0f, 0.01f, 0f);
transform.Translate(v);
}
}
}
あれ?「Axis 7」?
「7th Axis」じゃないの?
はい、ゲームパッドの「7th Axis」とUnity上で扱う名前は別物なので、ごっちゃにしないように別の名前にしてみました。
このままでは、Unityに「Axis 7」を扱うための設定が、まだ入っていないので、使えませんね。
それを設定していきましょう。
下の画面が「Input Manager」の設定画面です。
Unityの「Edit」→「Project Setting」から、表示することができます。
試しにHorizontalを開いてみると、下の様になっていますね。
「size」にある値が、今、Input Managerに設定してある設定の数になります。
これを「19」に増やして、新たな設定を加えてみましょう。
設定の一番下に「Cancel」が追加されましたね。
これを下の様に書き換えましょう。
この設定は、ゲームパッドの「7th Axis」の入力値を「Axis 7」という名前で、Unityのプログラムコードで扱う的な意味合いですね。

ここの「Name」に入力した「Axis 7」が、先ほどのプログラムの「Input.GetAxis ("Axis 7")」の箇所に繋がっていく感じです。
これでUnity側の設定も終わりです。それでは、試しに適当なcubeを作成して、先ほどのスクリプトを適用し、ゲームパッドの上ボタンを押してみましょう。
【実行結果】
おー、あがった~🙌
これは、簡単な例でしたがが、このように、Input Managerを活用していけば、多くのボタンを効率的かつ汎用的に管理していけそうですね。
また、以下のツールからゲームパッドのjoystick buttonやAxisなどの入力値を確認できるので、おススメです✨
【おススメ】
【参考】
お名前









