2017/07/04ゲームパッドでUnityのゲームを動かそうUnityゲームパッドスクリプトTweet(フル......フル......)そめ先生どうしたんっすか?自分のゲームをゲームパッドで遊びだいぃッ!!!!?Unityで作ったゲームを、せっかくだからゲームパッドで遊べるようにしたい。多くの人が考えることではないだろうか。このゲームパッド対応が結構クセ者なのだ。調べることが多くて今までに多くのUnity初心者を悩ませてきたという。ゲームパッド対応してると一部の審査員のウケもいいんだよな~まじっすか!!単純に遊びやすいし同じゲームでも面白く感じられるからね一度やり方を覚えれば今後の人生でずっと使えるノウハウでもある。そめ先生も自分の3Dゲームをゲームパッドでグリグリ動かしてみたいと思っていたので実装にチャレンジしてみた!今回はその情報をお届けしよう。ちなみにゲームパッド非対応のプロジェクトを後からゲームパッド対応にすることもできるが、色々と面倒なことが多いし、不具合につながりかねない。これからゲームを作ろうとしているなら、先に覚えて実装していったほうがいいぞ!使用するゲームパッドPCゲーム界で一番スタンダードな(多分)これを使わせてもらうどぉーん。Microsoftゲームコントローラーです。残念ながらXboxコントローラはそのままでは動かない。ナントカして動くようにしよう。使うInput.GetKey("キー名")というキーボードの入力を判定するメソッドがあるが、Input.GetButtonDownはゲームパッドのボタン入力を判定するメソッドだ。スクリプト上での記述の仕方は基本的に同じ。||(orを示す記号)を使うことでキー入力と両方有効にすることもできる。この記事で紹介した3Dモデルをコントロールするスクリプトに書き加えてみたのがこちら。50-53行目でキー入力とボタン入力のメソッドを記述している。ここではアニメーターコントローラへのBool(TrueかFalseかのゼロイチ判定)に使っている。どのように使うかはゲーム次第なのだが、基本的にはInput.GetKeyと同じように使える。インターネット上で見つけたスクリプトを改造するときは同じように記述してみよう。Inputを選択しよう。インスペクタービューに「InputManager」が表示され、一番上のAxesをクリックすると一覧が表示される。ここでゲームパッドによるボタン入力が、Unity内でどの入力と判定されるかを設定できる。文字通りInputManagerというわけだ。説明がタイヘンなのでGIF動画で説明すっぞおっすおっす!InputManager設定の様子。色々な表示があるが、作り変えるところは少ないInputManagerの中にデフォルトで項目が用意されているFire1~Fire3の名前を変更しよう。これはUnity作った人々が「とりあえずファイヤーって書いとけばピストル撃つのに使ってくれるやろ」と書いてるだけなので(多分)勝手に書き換えてよい。ここで設定した名前(Name)がボタンの名前になり、スクリプト上で記述することとなる。書かれているところを書き換えよう。ここでボタンナンバーを割り振る。0はXboxコントローラーのAボタン、1はBボタン、2はXボタンに相当する。Unityで使われるキー名、ボタン名は上のとおり。こちらのページに記述されている。末尾がボタンナンバーで、ゲームパッドのどのボタンかを割り振るわけだ。Xboxゲームコントローラーのボタンナンバーは以下のとおりだボタンナンバー表。仕様らしいんや番号がかぶらないように両方のプラットフォームの入力をスクリプトに書いておいてくれがぁーん!!「これは闇だねェ......。「これねー、おかしいんだよねー。なんとかならないのかなーって思いますよー。コレ使ったときも大変だったんだよねー」とUnity村の長老の方々もおっしゃっているのでそういうことなのだろうたぶん高度な対策方法はあると思うが、Unity上級者以外がボタンナンバー7~9番を使う時はWindowsとMacでかぶらないように使おう。ちなみにいずれかのInputを選択した状態でCtrl+Dを押すとInputを複製コピーできる。同じようなInputを多数作りたいときは複製コピーして増やし、設定しよう。実際にプレイhttp://inter-high-blog.unity3d.jp/wp-content/uploads/2017/07/actionplay.mp4アクションシーンはGIF動画だとカクカクになってしまうエンコ殺しなので動画にて。ゲームパッドのボタン入力に反応してBoolにチェックが入り、スクリプトによってアニメーション遷移が行われている様子。たにっこ君よ......自分のゲームがゲームパッドで動く。これは思った以上にスゴイ気分になれるのと、遊んでくれる人にとっても操作がより面白く感じられるようになる。