[UE4] DualShock4 を使う方法

だいぶ時間が空きました。
とりあえず UE4 で PS4 のコントローラーである DualShock 4(以下 DS4)を使えるように設定する方法を書いていきます。
すでに DS4 を PC に接続済み(有線か無線かは問いません)、かつ DS4を設定したい .uproject を Unreal Editor で開いている状態と仮定して記載しています。
……Unity? まあまたそのうち……

1. Raw Input プラグインを有効化する

Unreal Editor のメニュー内 [Edit] → [Plugins] から Plugins Window を開きます。「Windows RawInput」プラグインを探して Enabled にチェックを入れ、有効化します。状態を変更すると、Unreal Editor を再起動する必要があります。

画像1

2. Raw Input プラグインを設定する 1

再起動した Unreal Editor のメニューから [Edit] → [Project Settings...] を開きます。左のリストの一番下にある「Plugins」に「Raw Input」が追加されているので、これを選択します。

画像2

「Device Configurations」の「+」ボタンを押して新規の設定を追加していきます。

まず Vendor ID と Product ID を設定しますが、ここで接続している DS4 がどの型番かを確認してから以下の数値を入力してください。

DS4 をひっくり返すと裏面のシールに「MODEL CUH-……」という記載がありますので、そこで判別できると思います。
シールを剥がしてしまっていた場合は、表面から見てライトバーの色がタッチパッドに透けて見えるかどうかで判断してください。初期型の DS4 は両手で持った際に覗き込まないとライトバーの色が見えないタイプで、これが CUH-ZCT1x 系です。タッチパッドからライトバーの色が透けて見える場合は後期型の DS4 で、これが CUH-ZCT2x 系です。
ちなみに筆者の手元の DS4 は「CUH-ZCT2J」で、「CUH-ZCT2x 系」に該当しました。

参考:

3. Raw Input プラグインを設定する 2

引き続き Axis Properties と Button Properties を設定していきます。
もしかすると ZCT1x 系と ZCT2x 系とでマッピングが違うかもしれません。
手元には ZCT2x 系しかなかったため ZCT1x 系を調べることが出来ていませんが、ZCT2x 系の対応一覧は以下の通りです。

Button は全部そのままでいいのですが、Axis はいくつか設定する必要があります。Axis 1,2,3,4 は左スティックと右スティックなので、Axis Properties の 0 ~ 3 を開き、「Offset」に「-0.5」を入れていきます。
これはスティックの返却値が 0.0~1.0 となっているため、それに -0.5 を足すことで -0.5~0.5 の範囲に収めます。

しかし十字キーに関しては思ったように設定ができませんでした。
Axis 5 に全方向が入ってくるようなのですが、UE4 越しだとなにやら不可思議な値になってしまっていました。
なにか使う手立てはないか、後日もう少し調べます。

4. Input で設定する

Project Settings 内の「Input」から、必要なボタンを設定します。
Axis を使う場合は Scale に 2.0 を入れます。
前述の設定で -0.5~0.5 の範囲にしているので、これに 2.0 をかけて -1.0~1.0 の範囲にします。

画像3

2D Side Scroller サンプルを用いています。この画像では Jump に Button 2(×ボタン)、MoveRight に Axis 4(Lスティック)を指定しています。
また、スティックのハードウェア特性として常時なんらかの入力が起こってしまうため、ある程度の「あそび」を C++ なりで仕込む必要があります。

まとめ

現在ネット上に転がっている DS4 対応に関してはほとんど ZCT1x 系であるため、マッピングは少し違うかもしれません。
試しにまとめてみましたが、それでも注意すべきは型番くらいでしょうか。

十字キーに関しては、押したときに UE4 側から返される数値がすでに三角関数もしくはそれらに準ずるものと思われます。もしかすると Project Settings などの単純な設定だけではどうにもできないかもしれません。
情報をお持ちの方がいれば教えてくださるとありがたいです。

内容にミスなどあれば教えてくださるとありがたいです。
よろしくおねがいします。

この記事が気に入ったらサポートをしてみませんか?