UE4 のPS4コントローラー(dualshock4)対応

Unreal Engine 4

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

作者様に感謝。

UnrealEngine4用プラグイン DirectInputPadPluginの使い方 - GameProgrammar's Night
UE4(Windows)でDirectInputのゲームパッドを使えるようにするプラグインを作りました。github.com DirectInputPadPlu...

インストールの方法も使い方も上記ページに書いてあるので、詳細は割愛します。