本記事はUnityでキーボード、マウス、ゲームパッドなどの入力を全て管理してくれるRewiredというアセットの導入とその使い方についてご紹介します。
5000円ほどかかりますが、十分その価値がありました!
https://assetstore.unity.com/packages/tools/utilities/rewired-21676
#Rewiredの導入
Unityのプロジェクトを作成したら、Window -> Asset Store -> Search onlineでアセットストアを開きます。
検索欄にRewiredと入力すると見つかるので、そちらを購入しましょう。
次にUnityに戻ってWindow -> Package Managerでパッケージマネージャを開きます。
その中からRewiredを選択してDownloadボタンを押します。
ダウンロードが完了したらImportボタンを押してパッケージをインポートします。
Importボタンを押すと以下のようなポップアップメッセージが次々表示されるので、Proceed、Add Settings、Installを押していきます。
続いてこのようなポップアップメッセージが表示されます。こちらはインストール前にパッケージマネージャからText Mesh Proをインストールしないと、コンパイラーエラーが発生するとのことなので、Text Mesh Proをインストールしていない場合はStandard Versionを選択します。
今回はStandard Versionを選択していきます。
次にこのようなポップアップメッセージが表示されます。
こちらはスマートフォンに対応したゲームを作っている場合にはInstallを押しましょう。
最後にこのようなポップアップメッセージが表示されるのでInstall Docsを押しましょう。
ここまでの流れでやっぱりインストールしたい、と思ったところがあった場合はWindow -> Rewired -> Setup -> Run Installerから再度やり直せます。
Rewiredの使い方
Window -> Rewired -> Create -> Input ManagerでRewired Input Managerをヒエラルキーウィンドウに作ります。
その後、Rewired Input Managerを選択してインスペクターウィンドウのInput Manager内にあるLaunch Rewired Editorを選択します。
Launch Rewired Editorを押すとこのようなウィンドウが表示されます。選択項目がたくさんありますが、今回は主に使用するPlayers、Actions、Joystick Maps、Keyboard Maps、Mouse Mapsについて説明します。
上の五つの項目について軽く説明しておくと
Players:ゲームのプレイヤーを人数分登録する
Actions:ゲーム内でジャンプや歩くなどの動作に名前を付けます
Joystick Maps:様々な種類のゲームパッドの各ボタンにActionsで設定した動作を対応させる
Keyboard Maps:キーボードの各キーにActionsで設定した動作を対応させる
Mouse Maps:マウスのクリックなどにActionsで設定した動作を対応させる
というものになってます。
一つの動作に対してゲームパッド、キーボード、マウスを設定する
まずはPlayersを選択して左下にあるNewを押しましょう。
するとPlayers:の項目に1:Player0が追加されます。
この数を増やすことでゲームのプレイヤーを増やしていくことができます。
次にActionsを選択して画面下らへんにあるNewを押しましょう。
その後、右にいくつか項目が出てくるので、その中のNameとDescriptive Nameを作りたい動作の名前に変更します。(この名前はスクリプトで使うので入力しやすい名前にしましょう)
ゲームコントローラーの入力を実装する
Joystick Mapsを選択します。
すると左側に数多くの種類のゲームコントローラーがあるので、実装したいものを選びましょう。今回はXbox 360 Controllerを使います。
コントローラーを選択したらCreate Mapを押します。
下にCreate Defaultsというボタンが表示されるのでそちらを押します。
するとElement欄に選択したコントローラーの入力一覧が表示されるので使いたい入力を選択します。今回はAを使うことにします。
入力を選択したら右側に先ほどActionsで作ったhogeという名前の動作があるのでそちらを選択することで、そのボタンにhogeという動作が紐づきます。
キーボード入力を実装する
Keyboard Mapsを選択し、表示されるCreate Mapを選択します。
次に画面下にあるNewを押してから動作を発生させたいキーをKey欄から選択します。
Actionsで作ったhogeという名前の動作を選択し、そのキーにhogeという動作を紐づけます。
マウス入力を実装する
Mouse Mapsを選択し、表示されるCreate Mapを選択します。
次に画面下にあるNewを押してから画面右にあるNoneを押して、動作を発生させたいマウス入力を選択します。今回はLeft Mouse Button(左クリック)を選択しました。
その後、先ほどまでと同様にActionsで作ったhogeという動作を選択して紐づけます。
ここまで設定したMapsをPlayerに紐づける
Playersを選択します。
下に表示されるJoystick Mapsを選択して、Add Joystick Mapを押します。
これだけでPlayer0にJoystick Mapが紐づきました!
あとは同じようにKeyboard MapsとMouse Mapsも紐づけます。
実際にスクリプトで作った動作を使ってみる
以下のようなスクリプトを作ります。
using Rewired; を忘れないように注意してください。
player0.GetButtonDown("hoge")は、先ほどRewiredで作った動作名hogeに紐づけた入力のいずれかが押されることを取得できます。
今回はhogeにXbox360 ControllerのA、キーボードのW、マウスの左クリックが紐づいているので、このいずれかが押されるとhogeという文字をコンソールウィンドウに表示するようになっています。
このスクリプトをヒエラルキー上の適当なところにアタッチしてから実行すると
以下のようにキーボード、マウス、Xbox360 Controller全ての入力でhogeと表示されました!
あとはこの入力でゲーム内のキャラクターがジャンプしたりするようにすればすべての入力に対応したゲームを作ることができます!
Rewiredを使ってぜひ快適なゲーム制作ライフを~