Unity では Input の設定を書くだけで使えるのに、UE4 だと簡単にはできないという話です。
結論から言うと、DirectInputPadPlugin というプラグインを使用しました。
以下の内容は、UE4.13 と UE4.22 で試しています。
概要
PS4 のコントローラーは、DirectInput という方式でつながっているらしいです。一方 XBox などのコントローラーは、XInput 方式。
この違いの 対応方法がいくつかあります。
- (1) UE 4.15 以降で提供されている DirectInput のプラグインを使う
- (2) Windowsのゲーム を Dualshock4 で遊べるようにする フリーソフトを入れる
- (3) DirectInputPadPluginを入れる
他にも方法があると思いますが、すぐ見つかったのは上記3つの方法です。(1) があるのなら (1) で良いと思ったのですがダメでした。
友人に「遊んでみて!」っていうときに、よく分からないフリーソフトをWindowsに入れてほしいとは言いづらいので、私は (3) の方法にしました。
まあ (2) も (3) も 50歩100歩だと思います。 自分で遊ぶだけなら (2) の方が楽だと思います。
(1) UE4 が提供しているプラグイン
そもそもこれで動くなら何の問題もなかったのですが、期待通りには動きませんでした。ボタンは問題なさそうな感じですが、スティックがおかしな動きをします。
以下、やってみたり調べたりしたことのメモです。
元々、UE4は、XInput 方式だけしか対応していなかったようです。
そして、4.15 から Windows RawInput(DirectInput) Plugin が提供されたとのこと。
4.15 以降ならPS4のコントローラーで動きそうな気がしたので UE 4.22試してみました。
編集 –> Plugin から Input Device の Windows RawInput Plugin を 有効にする。UEの再起動が必要。
編集 –> プロジェクト設定 –> インプット で入力の設定を行う。
Generic USB Game controller 的なのがあるので、それを設定する。Axis 1 が右のスティックの上下でしたが、何もしない状態でキャラクターが前に進みます。一番上に倒すと止まります。-1.0~1.0の値を返してほしいところが、 0~1.0 の値を返しているような感じです。スティックがニュートラルの状態(中間の0.5)だと 前進になるようです。
編集 –> プロジェクト設定 –> プラグイン –> RawInput でオフセット設定ができそうなのですが、少し試した範囲ではうまくいきませんでした。
PS4のタッチパッドの設定があるので、もしかしたら方法はあるのかも。
(2) フリーソフトのインストール
PS4 のコントローラで PCのゲームを遊べるようにするためのフリーソフトを使う方法です。
検索すると以下のようなものがヒットします。これらのツールは試してみていません。
(※ インストールは自己責任でお願いします。)
- https://forums.pcsx2.net/Thread-DS4-To-XInput-Wrapper
- https://inputmapper.com/
- http://ds4windows.com/
(3) DirectInputPadPlugin
作者様に感謝。
インストールの方法も使い方も上記ページに書いてあるので、詳細は割愛します。