fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE4 キー入力のリピート処理の実装(Timer、Set Timer by Function Name、Clear Timer by Function Name、Gate)

キー入力のりピート処理の実装についてです。
一度キーを押して入力を受付して、
その後、そのキーを押し続けると一定間隔でキー入力を受け付ける感じですね。

基本の考えはこちらのalweiさんのツイートをもとにしてみました。

ただし、これだと最初に押した瞬間からずっと同じ間隔で入力を受け付けてしまうようです。

うちがやりたかったのは「ピッ…ピ、ピ、ピ、ピ、ピ、ピ」みたいな入力なのですよね。

それと、こちらを参考にキーの押しっぱなし処理も作っていたので
上記と下記のものを組み合わせて処理をつくってみることにしました。

・UE4 BluePrintメモ その1
http://pafuhana1213.hatenablog.com/entry/2014/09/09/004928

そこでできたのがこんな感じのBPです。
キーのリピート処理000
なんて複雑な…。
「Print String」は入力が受け付けているかどうかのチェック用ですね。
実際には関数なりのキー押したときの処理を呼ぶ感じになりそうです。

基本的な考えはalweiさんのツイートにあるように
リピート部分を「Set Timer by Function Name」ノードのタイマーイベントでやっています。
キーのリピート処理001

キーを離すと「Clear Timer by Function Name」によって
タイマーがクリアされるようにしています。
キーのリピート処理002

そして、「ピッ…ピ、ピ、ピ、ピ、ピ、ピ」みたいな入力にするために
「Delay」ノードを使って一定時間後にタイマー処理に移るようにしてみました。
キーのリピート処理003
しかし、この「Delay」中にキーを離してしまうと
「Set Timer by Function Name」が実行される前に
「Clear Timer by Function Name」が実行されてしまいタイマーがずっと残ってしまうので
再度チェックして「Clear Timer by Function Name」を呼ぶようにしています。

なんて無駄な処理なのでしょう…(´;ω;`)ウッ…

そこでいろいろな人に聞いてみたところ「Gate」というノードがあるようです。
(あとでブログにメモする予定です)
これを使うともっとシンプルなBPにできるようなのでやってみました。

こんな感じに。
キーのリピート処理004
最後の「Clear Timer by Function Name」がなくなってすっきりしました!

一応これでやりたいことはできたのでいいかなーと。
最終的にはいろいろなキー入力があるため、関数化したほうが良さそうです。

とりあえずはやりたいことができたのでメモということで。
できればキー入力の押しっぱなしとリピート入力については
エンジンのデフォルト機能で実装してもらいたいなーと!

| UE4 | 12:37 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/356-cb80fac8

TRACKBACK

PREV | PAGE-SELECT | NEXT