Rewiredという入力管理で最強のアセット

ドキュメント(英語)

入力をまとめて管理できるアセットです。

これだけだとイマイチありがたみが伝わらないかもしれませんが、使ってみてすっごく楽になりました。

キーボード、ゲームパッド、PS4、XBOX360、マウス、モバイルのタッチ操作とかを良い感じに実装できます。

同じようなアセットは他にもあるんですが、Rewiredのすごいところは

コントローラーのネイティブの機能も使える

ことです。

PS4のタッチも使えるみたいです(試してませんが)。Switchのコントローラーにだって対応しているとドキュメントに書いてあります。

というかこれを購入した理由はPS4のコントローラーを振動させたかったからでした。Unityで振動させる方法が中々分からなかった……。UnityのForumにもこのアセット使ったら? みたいなことが書いてあってこれを頼ることにしました。

買ってよかった。

というか、入力管理系のアセットはこれだけで良いとさえ思えました。

導入

WindowからInputManagerをもったコンポーネントを作成します。

シーンだけで使う場合はin sceneを選択してください。

使いまわすことが多いのでprefabとして作成したほうが良いと思います。

ここでは説明用でin sceneとして作成します。

Rewired Input Managerオブジェクトを選択してLaunch Rewired Editorボタン。

専用のウィンドウが表示されます。

使うときの操作を一通り書いてみます。


Players

playersボタンを押して、newボタン。

新しいプレイヤーを追加します。マルチプレイをする場合は複数newボタンをおしてプレイヤーを追加する必要があります。

Actions

Actionsボタン、Createmapボタンを押します。

入力したい情報を設定します。

とりあえず

Name--入力として使う文字列

Type-ボタンかAxis(JoyStickのような軸)か

の2つが重要です。

ここではJumpボタンと水平移動用のHorizontalを設定しました。

Axisの場合、Positive(+方向)とNegative(ー方向)の文字列も設定する必要があります。


それぞれのボタンがどのActionsに紐づくかを設定していきます。

今回の場合、JumpやHorizontalに対応するものを設定していきます。


Joystick Maps

CreateMapボタンを押すと上記の画像になるはずです。

左にコントローラ一覧があります。対応するコントローラーを選べば接続されてあるものが自動で適応されるようです。くっそ楽。

一番上にあるGamePadTemplateは対応するものがなかった時に設定されるようです。

PS4--対応

XBOX360--未対応

こんなときはXBOX360のコントローラーだとGamePadTemplateが適用されます。

それではGamePadTemplateを設定していきます。

newボタンを押してElementから対応するボタンを選択します。Actionを適用します。

この例だと、左JoyStickのX軸(横)がHorizontalに紐づきます。ボタン1がJumpに紐づきます。

Keybodeやマウスも同じようにCreateMapを押して設定できます。


補足ですが、公式によるとUnknownControllerにも設定をした方が良いようです。コントローラーによってはGamePadとして認識できないものもあるだとか。その場合、Axis0がX軸、Axis1がY軸になることが多いとのこと。


Players

再びPlayersタブに戻り、先ほど作成したMapを設定します。

Add Joystick MapでPlayer0に適用できます。

これで入力をスクリプトからとれるようになりました。

感覚的に操作できて簡単だと思います。といっても、ドキュメントが英語なのでてこずりましたけども。


スクリプト

ReInput.players.GetPlayer(数字);

でプレイヤーごとの入力をとれます。

UnityのInputと同じような感じでとれます。

上記のスクリプトだと、GetButtonDown("Jump")でキーボードでもゲームパッドでもJumpの入力を受け取れることができます。楽。


こんな感じで、感覚的にキーボードやゲームパッドのボタンなんかを設定できて、スクリプトから簡単に入力をとれるようになりました。