Unityの入出力管理ツール InControl で簡単にゲームコントローラーを設定

Unity

スマホでFPS/TPSの様な左右のスティックが必要なゲームでは、大抵の場合2本の仮想スティック(バーチャルスティック)を使っていると思います。

そんなゲームのテストプレイをする時、Unityエディターの Game Window では一度に片方の仮想スティックしか操作できません。スマホをPCやMacに繋いで Unity Remote を使えば良いのですが、フレームレートが落ちて操作感が変わってしまう。いちいちビルドするのも時間がかかって面倒。そこで、PS4やXbox360のコントローラーが使えると操作しやすいし、Steam向けのリリースも視野に入れることができます。

Unity標準メニューの Edit→Project Settings→Input でゲーム用コントローラーの設定ができるのですが…

incontrol_01

手動で全てのボタンやスティックの設定をするのは大変そうです。実際、筆者は設定方法をググってもよく分かりませんでした。

そこで、今回ご紹介するのが Unity Asset Store で販売されている入出力管理ツール 「InControl」です!これを使うと、いともたやすく行われるコントローラ設定ッ!

簡単ですが、一応手順をご説明します。(InControl 1.7.3 / Unity 2018.3.14f1 / macOS 10.14.4で確認)

InControl の初期設定

この記事の執筆時点では、通常$35が半額の$17.5で購入できます!
Unity Asset Store で購入後、Unityエディターからダウンロードとインポートを行ってください。その直後の段階だと、コンソールに下記の様なエラーが出ていると思います。

incontrol_02

初期設定が必要なので、メニューの InControlから Setup InputManager Settings を選びます。コンソールに下記の様に “successfully” と表示されたら成功です。
※バージョンによっては、Edit→Project Settings→InControl→Setup InputManager Settings にある様です。

先ほどのメニューにあった項目 Check InputManager Settings を試してみましょう。下記の様に “fine” と表示されるはずです。

ちなみに、Setupを実行前にCheckを行うと下記の様に設定が必要だと表示されます。

これでもうゲーム用のコントローラーを認識しています。ツール内に含まれているテスト用シーンで試してみましょう。Assets/InControl/Test/フォルダ内のシーン TestInputManager を開いて Game Window で実行します。

incontrol_04

USBケーブルで接続されたPS4のコントローラーを認識しています。画像では複数のボタンを同時に押していますがきちんと反応しています。

実際にゲーム内でプレイヤーを動かす

次は、実際にゲームの中で動かしてみましょう。

まず、メニューの GameObject→InControl→Manager を選んで、ヒエラルキーウィンドウに InControl オブジェクトを作成します。

incontrol_05

インスペクターウィンドウはこの画像の様になっていました。特に変更せずに進めます。

incontrol_06

次に、プレイヤー操作を管理するスクリプトの先頭に “using InControl” を追加します。

さらに、Update内に次のコードを追加します。

次からは、実際の環境に合わせてカスタマイズしてください。筆者の場合は、仮想スティックを画面タッチで動かすコードが下記の様になっていました(一部分)。

この “joystick.Horizontal” と “joystick.Vertical” の部分を置き換えます。

Unityエディターで実行して、正常に動作するのを確認したらもう一方のスティックも設定します。

これで、快適にテストプレイができるようになりました!

必要に応じて、下記のコードをUpdateの中に入れてください。UnityのコンソールでPS4コントローラーの動作確認ができます。

incontrol_logo

対応しているコントローラー一覧

こちらの記事を参考にさせて頂きました。

Unity