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などの入力値を確認できるので、おススメです✨


【おススメ】
【参考】
お名前