ウィジェットブループリント内でゲームパッドの入力をとれるようにした
どうも、ごりです。
今日はウィジェットブループリント内でのゲームパッドの入力の取り方を
僕なりにやってみました。
まずブループリントクラスを作成のところから、「ブループリントマクロライブラリ」を作成を選択して
親クラスは 「UserWidget」 で作成します。
名前は 「 GamePadInputMacroLibrary 」 とします。
今回はゲームパッドの左サムスティックで上下左右の入力とAボタンで決定するといった入力を取得したいと思います。
作成したマクロライブラリを開いて
まず右側の+マークをクリックして
「L_ThumStickY」「L_ThumStickX」「Button_A」と3つマクロを用意します。
「L_ThumStickY」で説明します。
インプットに実行ピンを追加し名前を「Execute」
アウトプットピンに実行ピンを3つ追加し、「Up」「Down」「Neutral」とします。
次から処理になります。
「GetPlayerController」ノードから「Get Inpur Analog Stick State」を取得します。
Witch Stick は 左スティックなので 「CAS Left Stick」のままでいいです。
僕はサムスティックをある程度傾けた時に入力判定を取りたいので
閾値の絶対値を 0.9にしています。
あとはStickYの値が閾値以上の場合は「Up」に
閾値以下の場合は「Down」に
それ以外は「Neutral」につなげばこれで完成です。
「L_ThumStickR」も同じように作ります。
次は「Button_A」についてです。
インプットには 実行ピンで「Execute」
アウトプットには 実行ピンで「Pressed」「NotPressed」
を追加します。
先ほどは「GetPlayerController」から「GetInputAnalogStickState」を取得していましたが、今度は「IsInputKeyDown」を取得します。
最後に ReturnValueが True なら Pressed
False なら Released につなげば 完成です。
あとは、入力を取得したいウィジェットブループリント内の
イベントティックに以下のようにつなげば入力を取得することができます。
これは毎フレーム判定しているので、InputAxis のような動作になります。
InputActionのようにしたい場合は、
このように DoOnce を使えば InputAction のようにすることもできます。
今回はマクロライブラリを使っての取得でしたが、
マクロライブラリを使わずにウィジェットブループリント内の仕組みで、取得する
方法があるみたいなので、いつかそれについてもやってみたいと思います。
これ間違っている、こうしたほうがもっと簡単などあれば
コメントお願いいたします。