📄

【UE5】スティックが弾かれたかを検知する方法

に公開

前回コントロールリグのIKをスティックで動かす記事を書きましたが、今回はスティックが弾かれたかどうかを検知する仕組みを作ってみました。

差分の検知

スティックを「倒す」と「弾く」の違いは「素早く大きく動いているか」だと思います。なのでそれを判別するための方法として、前のフレームと今のフレームの倒し具合を比較するという仕組みを作りました。

  • GetIK_LeftAxis(自作データアセット)で現在の入力値を取得
  • LeftAxisValueY(値を保存しておく変数)で1フレ前の入力値を取得
  • 0.2以上の差があった場合BranchのTrueが起動

ただ問題は何のイベントを起点とするかでした。

起動イベント

最初は前回の記事でも使用したEnhancedInputActionの仕組みをそのまま流用しました。

スティックが動かされたときに起動してくれるので問題ないかに見えたのですが、5回に1回ぐらい検知してくれないという挙動に悩まされました。恐らくスティックの状態変化が速すぎて正確に値をとれていなかったのだと思います。こちらはEventTickを代わりに使うことで解決できました。

Discussion