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 Start()
  {
   
  }
  
  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を活用していけば、多くのボタンを効率的かつ汎用的に管理していけそうですね。

 

 

 

【参考】

Unity 公式マニュアル 一般的なゲーム入力

 

 

 

 

 

 

お名前


削除キー(必須)

コメント(必須)


サイト内検索

twiter

CONTENTS

 

 

 

くるくるサンプルコード

 

 

 

【↓広告↓】