日々のいろいろ

日々を綴ったほとんど日記

UE4 長押し入力をする方法

まえがき

分からない事って調べれば出てくるけど、答えが1つとは限らないよね。
そんな中で”自分なり”の正解を出しておいたら比較もできるし、とりあえず自分の使ってるノードをメモとして残しておきたい。

※困った時「とりあえずコレで動くんだ」くらいに見て頂ければ幸いです。

事前知識として

今回は単純なのでブループリントの追加が出来れば余裕です。
関係ないけど一応前回のUE4記事貼っておきます。

legendimposter.hatenablog.jp

環境

  • Unreal Engine 4.25(日本語化)

  • プロジェクト設定ーThirdPersonテンプレート(ブループリント) 

ボタンの長押し

では早速。

まずプレイヤーの入力を受け付けるBP、僕の知ってるのだとレベルBPとキャラクターBPでBPを開きます。(今回使用したのはThirdPersonCharacterBP)
それ以外のBPでも入力を受け付けるノードを作ってる人はそちらでも大丈夫です。

f:id:legendimposter:20200810212325p:plain


完成!!

非常に簡単ですね。僕は辿り着くのに2時間くらい掛かりましたけども。
これで”Gate”ノードの後ろでは長押しの入力が行えます。
僕はこれが単純で分かり易かったので使っています。

 

※ココまで書いて

この記事を下書きに入れて長時間放置している間に自分の知識量が増えたので少し補足をさせて頂きます。

上記のBPの組み方だと”長押し”と”短押し”の区別ができないので押し方で処理を分けたい場合に不便です。

そこで「○○秒以上は長押し、それ未満は短押し」と判定する処理を作成していきます。

 

まず「何秒から長押しですか?」と決めるために、Floatで変数を作成します。
今回は”LongPress”とでもしましょう。
それをインプットの後ろ(見栄えを考えて僕はカスタムイベントを作成してインプットの後ろ)でセットします。
ここでセットした値が、○○秒以上は長押しの○○秒です。f:id:legendimposter:20200816152401p:plain

次に長押しされている時間を判断します。
仕組みは単純です。
LongPressから押している時間を引いて0秒以下になったことを判定するだけです。
引き算に使うのは"Get World Delta seconds"
たぶん1フレームを動かすのに掛かった時間が出力されます。
(詳しい人教えてください!)
数値で言うと0.016sec(おおよそ)そんな感じの値が出力されます。
UE4はたぶん、基本的に60FPSで動いているので 0.016*60=0.96(1秒)
つまり時間が計測できる訳です。
それをLongPressから引き算しBranchすることで判定です。

f:id:legendimposter:20200816151626p:plain

f:id:legendimposter:20200816151522p:plain

以上のノードで長押しを判定することが出来る訳です。
長押し後の処理を1度だけにしてみたり、短押しに処理を追加したり。
工夫次第でなんでも出来る気がします。楽しいですね。

それでは、ここまで読んで頂きありがとうございます。
これからも定期的にUE4の記事を投稿していきますのでよろしくお願いします。

参考ページ

answers.unrealengine.com