Trigger コンポーネント
This content is not available in your language yet.
Hapbeat SDK は多様な Trigger コンポーネントを用意しており、コードを書かずに触覚を組み込めます。
| コンポーネント | 発火タイミング | 主な用途 | 参考 Showcase Zone |
|---|---|---|---|
| HapbeatUnityEventTrigger | UnityEvent から Fire() を呼ぶ | UI Button / XR Interactable / Animation Event 等 | Z5 Charge |
| HapbeatStateBehaviour | Animator state Enter / Exit | キャラクターアクション、UI アニメーション、ドア開閉等 | Z2 Door |
| HapbeatCollisionTrigger | OnCollision / OnTrigger | 衝突、当たり判定、銃弾命中 | Z1 Bowling |
| HapbeatSequenceTrigger | grab / hold / release の 3 段階 | XR Interaction(つかむ・持つ・離す) | Z3 Fishing |
| HapbeatTickEmitter | 連続値の変化量に応じてスナップ発火 | Slider / ScrollRect 等のスクロール触覚 | Z4 Stream Console |
HapbeatUnityEventTrigger
Section titled “HapbeatUnityEventTrigger”UnityEvent(Button.OnClick / XRI Activate / Animation Event 等)の Fire() メソッドを紐付けて発火します。コードなしで任意の UnityEvent から触覚を呼べます。
設定:
- Event Map: EventMap.asset を参照
- Event: EventMap 内のエントリをドロップダウンで選択
On Activated: [Hapbeat Event Router] → HapbeatUnityEventTrigger.Fire()HapbeatStateBehaviour
Section titled “HapbeatStateBehaviour”AnimatorController の state に直接 attach する StateMachineBehaviour 派生。state Enter / Exit の瞬間に Animator runtime から直接呼ばれるため、scene 側 MonoBehaviour で Animator パラメータを poll する方式より遅延も発火条件も明快です。
通常の Trigger と違い、Add Component メニューには出ません。Animator window で対象 state を選択 → Inspector → Add Behaviour → Hapbeat State Behaviour で追加します。
設定:
- Event Map: EventMap.asset
- Entry On Enter / Entry On Exit: state 遷移ごとに別エントリを発火可能(片方だけでも OK)
- Required Previous State: 非空時は「指定 state からの遷移時のみ Enter 発火」(例:
Closed → LockedRattleだけ鳴らす、など) - Gain Multiplier: entry gain × manifest intensity への追加倍率
実装上の特徴:
- looping StreamClip を Enter で発火した場合、Exit で 自動的に Stop されるので「state に紐付く擦り音」がクリーンに切れます
- 参照フィールド (EventMap 等) は AnimatorController asset 上に保存される(ScriptableObject 同士の参照なので scene 依存なし)
- Showcase Z2 Door:
Open/Closedstate に各 1 個ずつ attach してdoor_open/door_closeを発火
HapbeatCollisionTrigger
Section titled “HapbeatCollisionTrigger”Collision / Trigger イベントで発火。速度連動 (Gain Mode: VelocityScaled) が可能。
設定:
- Tag Filter: 反応するオブジェクトの Tag(空 = 全対象)
- Layer Mask: レイヤーフィルタ
- Gain Mode: Fixed(固定)/ VelocityScaled(速度連動)
- Min Velocity: これ以下の速度では発火しない
- Cooldown: 連続発火防止(秒)
強い衝撃ほど強い触覚、というマッピングが組めます。
HapbeatSequenceTrigger
Section titled “HapbeatSequenceTrigger”XR Interaction Toolkit や独自の grab system と組み合わせ、3 段階の Event を 1 コンポーネントで管理します。
設定:
- On Grab: つかんだ瞬間の Event(例:
bowling.grab) - On Hold: 持っている間の継続 Event(CLIP 推奨、例:
bowling.hold) - On Release: 離した瞬間の Event(例:
bowling.release)
XR Helpers サンプル (Samples~/XriHelpers/) を Import すれば XRGrabInteractable / XRSocketInteractor との接続が自動でセットアップできます(プロジェクト側で XRI を導入していなくても scaffold 自体は壊れません)。
HapbeatTickEmitter
Section titled “HapbeatTickEmitter”Slider / ScrollRect などの連続値の変化量に応じて、スナップアルゴリズムでトリガーします。
- Cooldown 不要(アルゴリズムが連続発火を自制)
snap intervalで感度を調整
ParameterBinding と組み合わせる
Section titled “ParameterBinding と組み合わせる”HapbeatParameterBinding を併用すると、Transform / Rigidbody の値を StreamClip の gain / pan に毎フレームマッピングできます。
例: 距離が近いほど触覚を強くする、移動速度が上がるほど振動が強まる。
メニューバー → Hapbeat → Debug → Attach Event Logger to Selected を実行すると、選択中 GameObject の UnityEvent 発火をコンソールにログ出力できます。XRI のイベント発火順序の可視化に有効です。
詳細ログを記録する場合: Hapbeat → Debug → Logs → Start Recording
次のステップ
Section titled “次のステップ”- EventMap ウィンドウ
- Streaming buffer を調整する — StreamClip モードの停止遅延・途切れ耐性のトレードオフ
- Showcase Sample — 各 Trigger の実例 (Z1 Collision / Z2 Animator / Z3 Sequence + Binding / Z4 TickEmitter / Z5 UnityEvent + スクリプト)
- BatchSetup vs スクリプト