愛をもってゲームをつくるゴリラのブログ

UE5勉強中のゴリラがいろいろ頑張ります。

ウィジェットブループリント内でゲームパッドの入力をとれるようにした

どうも、ごりです。

 

今日はウィジェットブループリント内でのゲームパッドの入力の取り方を

僕なりにやってみました。

 

まずブループリントクラスを作成のところから、「ブループリントマクロライブラリ」を作成を選択して

f:id:m-goolee-y:20161112124913p:plain

親クラスは 「UserWidget」 で作成します。

名前は 「 GamePadInputMacroLibrary 」 とします。

f:id:m-goolee-y:20161112124953p:plain

 

今回はゲームパッドの左サムスティックで上下左右の入力とAボタンで決定するといった入力を取得したいと思います。

作成したマクロライブラリを開いて

 

まず右側の+マークをクリックして

「L_ThumStickY」「L_ThumStickX」「Button_A」と3つマクロを用意します。

 f:id:m-goolee-y:20161112125706p:plain

 

「L_ThumStickY」で説明します。

インプットに実行ピンを追加し名前を「Execute」

アウトプットピンに実行ピンを3つ追加し、「Up」「Down」「Neutral」とします。

f:id:m-goolee-y:20161112130253p:plain

 

次から処理になります。

f:id:m-goolee-y:20161112130501p:plain

「GetPlayerController」ノードから「Get Inpur Analog Stick State」を取得します。

Witch Stick は 左スティックなので 「CAS Left Stick」のままでいいです。

 

僕はサムスティックをある程度傾けた時に入力判定を取りたいので

閾値の絶対値を 0.9にしています。

 f:id:m-goolee-y:20161112130933p:plain

 

あとはStickYの値が閾値以上の場合は「Up」に

閾値以下の場合は「Down」に

それ以外は「Neutral」につなげばこれで完成です。

f:id:m-goolee-y:20161112132042p:plain

 

「L_ThumStickR」も同じように作ります。

f:id:m-goolee-y:20161112132210p:plain

f:id:m-goolee-y:20161112131926p:plain

 

次は「Button_A」についてです。

インプットには 実行ピンで「Execute」

アウトプットには 実行ピンで「Pressed」「NotPressed」

を追加します。

f:id:m-goolee-y:20161112132540p:plain

 

先ほどは「GetPlayerController」から「GetInputAnalogStickState」を取得していましたが、今度は「IsInputKeyDown」を取得します。

f:id:m-goolee-y:20161112132854p:plain

 

最後に ReturnValueが True なら Pressed

False なら Released につなげば 完成です。

 

f:id:m-goolee-y:20161112133045p:plain

 

あとは、入力を取得したいウィジェットブループリント内の

イベントティックに以下のようにつなげば入力を取得することができます。

 

f:id:m-goolee-y:20161112133657p:plain

 

これは毎フレーム判定しているので、InputAxis のような動作になります。

InputActionのようにしたい場合は、

このように DoOnce を使えば InputAction のようにすることもできます。

f:id:m-goolee-y:20161112134040p:plain

 

今回はマクロライブラリを使っての取得でしたが、

マクロライブラリを使わずにウィジェットブループリント内の仕組みで、取得する

方法があるみたいなので、いつかそれについてもやってみたいと思います。

 

これ間違っている、こうしたほうがもっと簡単などあれば

コメントお願いいたします。