PS4コントローラーに対応する

UE4はゲームパッドはxinputしか対応してないからPS4のコントローラーに対応させなくてもいいやー、と思っていた時期がありました、私にも…

でもゲームパッド推奨で作っているゲームで、特に日本で、PS4コントローラーに対応させないってどうなの?ですよね?
一応UE4でもRAW INPUTのプラグインがあるみたいだし。
で調べましたが、あんまり書いてあるところがなく、書いてあっても微妙ですーって内容ばかり…
ただあまり難しそうではなかったのでやってみました!

そしてホントに微妙でした!w


まずはおもむろにPS4コントローラーをPC(Windows10)に接続し、ドライバが勝手にインストールされるのを待ちます。
すると勝手に使えるようになりました。
便利!
設定→デバイス→デバイスとプリンター
にWireless Controllerがあるのを確認したら右クリックでゲームコントローラーの設定→プロパティで動くことを確認できます。
パッドの動作を確認

ではUE4に組み込んでみるべくTPSテンプレートを立ち上げて、PluginsからWIndows RawInputをEnableにして再起動。
プロジェクト設定のインプットの所で
左スティックY軸(前後の動き)をGenericUSBControllerAxis3
左スティックX軸(左右の動き)をGenericUSBControllerAxis4
右スティックX軸(カメラ左右)をGenericUSBControllerAxis2
右スティックY軸(カメラ上下)をGenericUSBControllerAxis1
にして、Scaleを下のようにします。
DualShock4は送られてくる数値が-1から1ではなく0から1なので
scaleを2倍にして、xinputとは逆の数値のものにはマイナスをつける
このままでは中央値がずれているのでオフセットをBPの方でかけます。
プラグインの設定の方でもオフセット値を設定できるみたいですがとりあえずなのでBPの方で…
強引にオフセット値1.0を加減算してるのでxinputのパッドはおかしくなります

と、こんな感じでPS4コントローラーでも動くようになります。

が!!

まず、中央値が微妙にずれてて、ずれ値が結構大きいのでニュートラルの状態でも微妙にキャラが動いてしまいます。
ここはまあ、デッドゾーンの設定をすればなんとかなるかと思います。

問題はボタンの方でした。
ボタンは上のWindowsのコントローラー設定で配置の対応を確認でき、とりあえず×ボタン(XinputタイプではAボタン)にジャンプを設定して動かしてみましたが、なんか3回に1回くらいしか反応してくれません…
強く押したりいろいろやってみましたが変わりませんでした。
他のボタンでも試しましたが反応具合は同じようなものでした。
これはデュアルショック4のボタンのアナログ数値をデジタルのオンオフに変換するときのスレッショルド値が微妙なんでしょうかね。

それから上下カーソルボタンは対応してないみたいでした。
(とりあえずUE4のインプット設定でボタン番号20番まで試してみましたが反応なしでした)

まとめますと
・スティック系はオフセットを入れてデッドゾーンを設ければ使える
・トリガーは使い方次第ですが問題ないかと
・ABXY、L1R1ボタンは反応が悪いのでシビアな入力が必要なところでは使えない
・上下左右カーソルボタンは使えません

うまく使える方法がありましたらぜひ教えてください!!
間違い等ありましたらご指摘よろしくお願いします!

コメント

このブログの人気の投稿

フィールド⇔バトルについて

Level Streaming完全に理解した(わかってない)

最低限のサウンド再生について