入力をまとめて管理できるアセットです。
これだけだとイマイチありがたみが伝わらないかもしれませんが、使ってみてすっごく楽になりました。
キーボード、ゲームパッド、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に適用できます。
これで入力をスクリプトからとれるようになりました。
感覚的に操作できて簡単だと思います。といっても、ドキュメントが英語なのでてこずりましたけども。
スクリプト
using Rewired; using UnityEngine; public class PlayerController : MonoBehaiviour { Player _player; int playerId = 0; void Awake() { _player = ReInput.players.GetPlayer(playerId); } void Update() { if(_player.GetButtonDown("Jump"){ Debug.log("Jump"); } } }
ReInput.players.GetPlayer(数字);
でプレイヤーごとの入力をとれます。
UnityのInputと同じような感じでとれます。
上記のスクリプトだと、GetButtonDown("Jump")でキーボードでもゲームパッドでもJumpの入力を受け取れることができます。楽。
こんな感じで、感覚的にキーボードやゲームパッドのボタンなんかを設定できて、スクリプトから簡単に入力をとれるようになりました。