【UEFN】Input Trigger Device (入力トリガーの仕掛け) の使い方|Verseでボタン長押し検知と秒数取得を実装する
こんにちは、UEクリエイターズです。今回もUEFN(Unreal Editor for Fortnite)の使い方について解説していきます。
この記事では、Input Trigger Device(入力トリガーの仕掛け)の使い方とVerseによる長押し制御について具体的に説明していきます。
動画でも解説しているので参考にしてみてください。
概要

従来のUEFN開発では、Button Device(ボタンの仕掛け)などの物理的なデバイスをゲーム内に配置し、プレイヤーがそれとインタラクトすることでロジックを起動させていました。
しかし、Input Trigger Device(入力トリガーの仕掛け)を使用することで、プレイヤーのコントローラーによる(キーやボタン)入力を直接検知し、独自のゲームロジックを制御できるようになります。例えば、マウスの右クリック(照準)やジャンプ、ダッシュといった身体アクションに連動したイベント作成が可能です。

今回は、「ボタンを長押ししている間だけライトが点灯し、離した際にその秒数をログに出力する」という実装を例に、Verseでの制御方法を詳しく解説します。
※検証環境:Unreal Editor 5.8(2025年12月時点)
デバイスの基本設定

実装には以下の2つのデバイスをビューポート上に配置します。
1. Customizable Light Device(カスタマイズ可能なライトの仕掛け)
演出用のライトとして使用します。

- Initial State(初期状態): False(チェックを外す)
- Light Color(ライトの色): 任意(例:赤)
2. Input Trigger Device(入力トリガーの仕掛け)

プレイヤーの特定の入力を監視します。

- Creative Input(クリエイティブ入力): 監視したいアクションを選択します。今回は Target(照準 / マウス右クリック) を使用します。
- ※他にも Fire(射撃 / マウス左クリック)、Jump(ジャンプ)、Sprint(ダッシュ)などが選択可能です。
Verseによる制御・実装
Verseを使用して、入力の開始(Pressed)と終了(Released)を検知します。特に、離した瞬間に「何秒間押していたか」という情報を取得する点がポイントです。
実装コード
コード スニペット
# ----------------------------------------------
# Documentation: https://uecreators.com/input-trigger-verse
# ----------------------------------------------
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# 入力トリガーを使って「押している間だけ」反応するデバイス
input_action_manager := class(creative_device):
# 1. 入力トリガーの仕掛け
# エディタ側で「入力(Input)」を「Target(照準)」などに設定しておきます
@editable
MyInputTrigger : input_trigger_device = input_trigger_device{}
# 2. 反応させるライト(演出用)
@editable
StatusLight : customizable_light_device = customizable_light_device{}
# ゲーム開始時の処理
OnBegin<override>()<suspends>:void=
# ボタンを「押した瞬間」のイベント登録
MyInputTrigger.PressedEvent.Subscribe(OnInputPressed)
# ボタンを「離した瞬間」のイベント登録
# ※注意:離した時のイベントは、少し特殊なデータを受け取ります
MyInputTrigger.ReleasedEvent.Subscribe(OnInputReleased)
# ボタンを押した時の処理
# ここはいつも通り、Agent(押した人)が渡されます
OnInputPressed(Agent:agent):void=
Print("ボタンを長押し中:警戒モードON")
StatusLight.TurnOn() # ライトを点ける
# ボタンを離した時の処理
# 【重要】ReleasedEventは「誰が(Agent)」と「何秒押したか(float)」の
# 2つのデータがセット(tuple)になって送られてきます
OnInputReleased(Args : tuple(agent, float)):void=
# Args(引数)の中から、1つ目のデータ(Agent)を取り出します
# 「Args」は「Argument(s) 引数の複数形」の略称として名前付けしています
Agent := Args(0)
# 2つ目のデータ(押していた時間)を取り出します
# Tuple typeのデータは()内にインデックス番号を入力することで取り出し可能
Duration := Args(1)
Print("ボタンを離しました。押していた時間:{Duration}秒")
StatusLight.TurnOff() # ライトを消す
技術解説:Tuple(タプル)とFloat(フロート)
この実装の核となるのは、ReleasedEvent から渡されるデータの構造です。
- Float(フロート)型: 小数点を含む数値データです。今回の
Durationには「45.188…秒」といった詳細な時間情報が格納されます。 - Tuple(タプル)型: 異なるデータ型をひとまとめにした形式です。
ReleasedEventは(agent, float)という2つのデータを返します。 - インデックスによる抽出: タプル内のデータを取り出すには、
Args(0)(1番目のデータ)やArgs(1)(2番目のデータ)のように、0から始まる番号(インデックス番号)を指定します。
まとめ

Input Trigger Device を活用することで、プレイヤーの「身体アクション」に基づいた高度なゲームロジックを構築できます。
特に「長押し時間」を取得できる機能は、以下のような応用に役立ちます。
- チャージ攻撃: 3秒以上溜めた場合のみ強力な攻撃を発動させる。
- タイミングゲーム: 指定された時間ぴったりにボタンを離すギミック。
- 操作の感触向上: UFOキャッチャーのように、押している間だけ動き、離すと止まる直感的な操作感の実現。
物理的なデバイスに頼らず、プレイヤーの手元の入力を直接ロジックに結びつけることで、既存のフォートナイトにはない独自のゲーム性を生み出していきましょう。
関連資料
動画版はこちら:https://youtu.be/wE2bl1ZCAVU
