CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】コントローラーの接続方法・操作方法まとめ
こんにちは!Unityのゲームをコントローラーで操作できたらいいのに…と思ったことはありませんか?
実はUnityでは、PCゲームに使うコントローラーを使ってゲームを操作することができるんです!
本記事ではコントローラーの接続方法や操作方法を紹介していきます。
コントローラーの接続方法
コントローラーを接続する方法を以下のような順番で解説していきます。
- コントローラーの接続確認をする
- InputManagerでボタンを割り当てる
- コントローラーで操作するスクリプト
- InputSystemで接続する
なお、今回はWindowsPCでの接続方法を解説していきます。
コントローラーの接続確認をする
まずはPCにコントローラーが接続できているかを確認しましょう。
スタートメニューから設定→デバイスを選択します。
Bluetoothとその他のデバイス内に接続したゲームパッドが表示されていれば、このままUnityでも利用することができます。
ここにゲームパッドが表示されていない場合は以下の項目を確認して再接続してみましょう。
- ドライバが正しくインストールされているか
- USB接続が正しく行われているか
- Windowsに対応したゲームパッドか
- バッテリーが充電されているか
InputManagerでボタンを割り当てる
コントローラーが認識されたら、Unity内で使えるように連携させていきます。
Edit→Project Settingsを開きましょう。
ProjectSettings内のInputManagerを開きましょう。
ここからコントローラーに対応するボタンを割り当てていきます。
下のGIFのように、まずFire1となっている箇所をクリックして開きましょう。
開いたFile1内のPositiveButtonの箇所を書き換えます。
「joystick button 0」と入力しましょう。
このボタン0というのはコントローラーのAボタンに対応しています。
コントローラーのボタンそれぞれについては名称が決まっているので、後に紹介します。
これでコントローラーからのAボタンの入力を受け付ける準備ができました。
コントローラーで操作するスクリプト
コントローラーからの入力に応じて処理を行うスクリプトを用意してあげましょう。
Controllerというスクリプトを作成し以下のように記述しましょう。
InputManagerで設定したボタンが押されたら、コンソールに表示させるプログラムです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Controller : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown ("joystick button 0")) {
Debug.Log ("ボタンが押された");
}
}
}
CreateEmptyでゲームオブジェクトを作成し、名前をControllerManagerとでもしておきます。
先ほど作成したスクリプトをドラッグアンドドロップでControllerManagerにセットします。
プログラムを実行してコントローラーのAボタンを押すと、以下のようにコンソールに確かに表示されました。
実際のゲームに実装する時は、スクリプト内のDebug.Logの部分を移動や攻撃処理などに変えてあげましょう。
同様にして、方向キーや他のボタンなども対応させることでUnity内のゲームをコントローラーで動かすことができますね。
各ボタンの名称については以下の画像を参考にしてください。
InputSystemで接続する
ここまでInputManagerを使ってUnityでコントローラーを使う方法を紹介してきました。
コントローラーを使う新しい別の方法として、InputSystemというものもあります。
InputSystemは最近のゲームパッドに標準で対応していたり、バーチャルコントローラーを簡単に実装できるという利点があります。
このInputSystemについてはUnity公式のPackageManagerから無料で利用することができます。
InputSystemを使うには先ほどのようなInputManagerでボタンを割り当てる設定は必要ないですが、新たにスクリプトを作る必要があります。
詳しい使い方やスクリプトについては以下の公式の記事を参考にしてみてください。
コントローラーを複数認識させる方法
Unityでコントローラーを複数認識させて使うこともできます。
InputManagerのSizeから、コントローラによる入力数を増やすことができます。
この増やした入力数の分を、2個目のコントローラーに割り当てていくことで複数コントローラーによる操作が実装できます。
詳しい設定方法は下の記事が参考になります。
コントローラーを振動させる方法
Unityでコントローラーを振動させることができます。
以下のようなメソッドが用意されており、これによりゲームパッドの左右のモーターを回転させて振動させることができます。
SetMotorSpeeds(1.0f, 0.0f);
ただし、このメソッドを使うためには前提としてInputSystemを導入している必要があります。
詳しい実装方法は下の記事が参考になります。
コントローラーのおすすめアセット
InControl
InControlはUnityでコントローラーを使う設定を手助けしてくれるアセットです。
Xbox360やPS4のコントローラーなどにも対応しています。
InputManagerから一つずつ設定するよりも効率よく設定することができますね。
Controller Overlays & Button Kits
Controller Overlays & Button KitsはコントローラーのPNG・PSD ファイルが入ったアセットです。
色々な種類のコントローラーに対応した画像が用意されています。
ゲーム内にコントローラーの操作説明などを表示させたい時に非常に役立つアセットです。
まとめ
以上、Unityでコントローラーを使う方法を解説してきました!
コントローラーの設定は複雑な部分もありますが、アセットなどを利用することで簡単に設定することもできます。
自作のゲームをコントローラーで遊べると感動します。
ぜひコントローラーを使いこなせるようになりたいですね!