コンテンツにスキップ
JA

Showcase(サンプルレベル)

プラグインに同梱する Showcase レベルです。ゲーム内の出来事を Hapbeat Event Map の entry へ接続する 5 つのサンプルを収録しています。各 zone Actor の Details と EM_Showcase を開くと、再生する触覚とその設定を確認・変更できます。

Zone実装方法確認できる触覚配線
Z1 BowlingC++ Actor + collision triggerpin の衝突から z1_pin_hit を発火する配線
Z2 Swing DoorBlueprint Event Graphドアの Timeline と Play Event (Hapbeat) を同じ操作分岐から始める配線
Z3 FishingC++ Actor + Sequence / Parameter Bindinghook の開始・loop・解除と、魚の速度を loop Gain へ送る配線
Z4 Stream ConsoleBlueprint Event Graph + Widget Blueprintstream の開始・停止、UI の Gain / Pan、tick、Address Override の配線
Z5 Target RangeC++ Actor + collision triggercharge・shot の直接 SDK 呼び出しと、target hit の light / heavy 分岐
  1. Content Browser > SettingsShow Plugin Content を有効にします。
  2. Plugins/HapbeatSDK/Content/HapbeatSamples/Showcase/Maps/Showcase を開きます。
  3. World Outliner で対象の zone Actor を選びます。
  4. Content Browser > HapbeatSamples/Showcase/EM_Showcase を開き、entry の ClipGainTargetLoop を編集します。
ゲーム入力 / 衝突 / 状態遷移 / UI
→ Hapbeat component または zone Actor
→ Event Map entry
→ Hapbeat SDK
ball が pin に Hit
→ pin の HitTrigger
→ Pin Hit Event

Pin Hit Event は、6 本の pin が衝突したときに再生する Event Map entry です。

  1. Showcase map > World OutlinerZ1_Bowling を選びます。
  2. Details > Hapbeat > Bowling > Pin Hit を開きます。
  3. EM_Showcasez1_pin_hit entry にある Gain を変更します。
    • 例: 現在値を半分にする。
    • 確認できること: ball と pin の衝突は同じまま、触覚の強さだけが変わります。
  4. Pin Hit Event を変更します。
    • 例: z1_pin_hit から z2_door_slam に切り替える。
    • 確認できること: 同じ pin 衝突が、選んだ entry の触覚を発火します。

Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。

Plugins
└ HapbeatSDK
└ Source
└ HapbeatSDKSamples
├ Public
│ └ HapbeatShowcaseZ1BowlingActor.h
└ Private
└ HapbeatShowcaseZ1BowlingActor.cpp

最初に Public/HapbeatShowcaseZ1BowlingActor.h を開き、次に同名の Private/HapbeatShowcaseZ1BowlingActor.cpp を開きます。

BuildEventMap が Details の EventMapOverridePinHitEvent を解決し、SetUpPins がその map と entry を各 pin の HitTrigger へ渡します。

SetUpPins 内の次の 2 行が、Details の選択を実際の pin 衝突 trigger へ接続する箇所です。

Pin->HitTrigger->EventMap = EventMap;
Pin->HitTrigger->EntryId = PinHitEntryId;

Z2 Swing Door — Blueprint からイベントを発火する

Section titled “Z2 Swing Door — Blueprint からイベントを発火する”

BP_Z2_Door は、ドア操作の各分岐から Play Event (Hapbeat) を発火する Blueprint 完結の例です。

  1. PIE を開始し、Shift + F1 を押します。
  2. World Outliner > Play WorldZ2_Door を選びます。
  3. Details > Hapbeat > Door EventsDoor Slam Event を変更します。
    • 例: z2_door_slam から z2_door_close に切り替える。
    • 確認できること: G の slam Timeline は同じまま、選んだ entry の触覚を発火します。

SDK の接続を確認する(Blueprint)

Section titled “SDK の接続を確認する(Blueprint)”

PIE を停止し、Content Browser の HapbeatSamples/Showcase/BP_Z2_Door を開いて Event Graph を選びます。FGLInput Key から Switch on Door State、対応する動作 lane、Play Event (Hapbeat) をたどります。

F / G / L Pressed
→ Switch on Door State
→ DoorOpen / DoorClose / DoorSlam / DoorRattle / Lock / Unlock
→ 対応する z2_door_* entry の Play Event (Hapbeat)
→ DoorHinge の Timeline

各 lane の Play Event (Hapbeat) は、Door Event Map と対応する Door … Event の Get node を受け取ります。これが PIE Details の選択をゲーム内操作へ渡す箇所です。Timeline は同じ lane で始まるため、ドアの動きと触覚の開始点がそろいます。

左クリック press / release
→ Shark.HookSequence
→ z3_hook_start / z3_hook_loop / z3_hook_release
Shark の速度
→ HookVelocityBinding
→ loop の Gain

Z3_FishingHook Start / Loop / Release Event は、左クリックの開始・継続・解除で再生する entry です。

  1. Showcase map > World OutlinerZ3_Fishing を選びます。
  2. Details > Hapbeat > Fishing > Hook を開き、Event Map と 3 つの entry を確認します。
  3. Hook Loop Event を変更します。
    • 例: z3_hook_loop から z5_charge_loop に切り替える。
    • 確認できること: Hook WiringLoop Entry Name が選択した entry になり、hook 中の loop が切り替わります。

Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。

Plugins
└ HapbeatSDK
└ Source
└ HapbeatSDKSamples
├ Public
│ └ HapbeatShowcaseZ3FishingActor.h
└ Private
└ HapbeatShowcaseZ3FishingActor.cpp

BuildEventMapAndHaptics が 3 つの選択値を HookSequence の start / loop / stop entry へ渡します。SetHooked が sequence の Fire() / Stop() を呼びます。HookVelocityBinding は釣られた魚の速度を loop 再生の Gain に反映します。

Z4 Stream Console — loop と runtime parameter

Section titled “Z4 Stream Console — loop と runtime parameter”

BP_Z4_StreamConsole は、Space による loop 再生と slider 値による Gain / Pan 更新を接続する Blueprint の例です。

Space
→ Switch on Loop State
→ Stopped: LoopTrigger.Fire → Loop State = Running
→ Running: LoopTrigger.Stop → Loop State = Stopped
Gain / Pan slider
→ On Gain/Pan Slider Changed
→ BP_Z4_StreamConsole Event Graph
→ Set Binding Input (Hapbeat)
→ Update Stream Parameter (Hapbeat)
→ Fire Tick From Value (Hapbeat)
  1. PIE を開始し、Shift + F1 を押します。
  2. World Outliner > Play WorldZ4_StreamConsole を選びます。
  3. Details 上部の component tree > TickEmitter を選び、Details > Hapbeat > TickTick Threshold を変更します。
    • 例: 0.1 から 0.2 にする。
    • 確認できること: 次に Gain / Pan slider を同じ距離だけ動かしたときの tick 回数が半分になります。

Tick Threshold は実行中の TickEmitter が slider 入力ごとに読む値なので、PIE を再起動する必要はありません。一方、EventGraph の node や接続を編集した場合は、停止後に compile して PIE を開始し直します。

SDK の接続を確認する(Blueprint)

Section titled “SDK の接続を確認する(Blueprint)”

PIE を停止し、Content Browser の HapbeatSamples/Showcase/BP_Z4_StreamConsole を開いて Event Graph を選びます。

  1. Space Bar から Switch on Loop State をたどります。Stopped の Fire Trigger (Hapbeat)z4_stream_loop を開始し、Running の Stop Trigger (Hapbeat) が同じ loop を停止します。
  2. On Gain Slider Changed / On Pan Slider Changed から Set Binding Input (Hapbeat)Update Stream Parameter (Hapbeat) をたどります。slider の float 値を GainBinding / PanBinding に入れ、両 binding が LoopTrigger の再生中 stream の Gain / Pan を更新します。
  3. 続く Fire Tick From Value (Hapbeat) は、slider が Tick Threshold をまたいだときだけ z4_slider_tick を再生します。

Address Override は、Player / Group に対応する Hapbeat だけへ送るための実行時の送信先指定です。Event Map の entry や再生配線は変えません。詳しくはターゲティングを参照してください。

Z5 Target Range — charge / shot と target hit

Section titled “Z5 Target Range — charge / shot と target hit”
charge begin / threshold / release
→ z5_charge_* / z5_shot_*
projectile が target に Hit
→ LightHitTrigger または HeavyHitTrigger
→ z5_tar_hit_light / z5_tar_hit_heavy

Z5_ChargeShot の 6 つの Event プルダウンは、charge、shot、target hit で再生する entry を選びます。

  1. Showcase map > World OutlinerZ5_ChargeShot を選びます。
  2. Details > Hapbeat > Showcase を開きます。Event Map entry は Haptic Events、charge の調整は Charge にあります。
  3. Heavy Threshold を変更します。
    • 例: 0.7 から 0.4 にする。
    • 確認できること: threshold entry と heavy shot へ切り替わるタイミングが早くなります。
  4. Charge Loop Gain Curve の中間を下げます。
    • 例: ChargeT = 0.5 の Gain を 0.2 にする。
    • 確認できること: charge 前半の loop は弱く、後半でより急に強くなります。
  5. Heavy Shot Event を変更します。
    • 例: z5_shot_heavy から z1_pin_hit に切り替える。
    • 確認できること: heavy charge の release が、選んだ entry を再生します。

Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。

Plugins
└ HapbeatSDK
└ Source
└ HapbeatSDKSamples
├ Public
│ └ HapbeatShowcaseZ5ChargeShotActor.h
└ Private
└ HapbeatShowcaseZ5ChargeShotActor.cpp

BuildEventMap が Details の EventMapOverride と 6 つの *Event を entry ID に解決します。TickCharge Loop Gain Curve を評価し、再生中の charge loop の Gain を更新します。HandleChargeBeginTickFireShotAfterDelay が charge / shot の ID を FireOneShotEntry へ渡します。SetUpTarget は light / heavy target-hit の ID を各 collision trigger へ渡します。

変更したい内容変更場所
Clip、Gain、Target、loopEM_Showcase の entry
Z1 の pin-hit entryZ1_BowlingEvent Map / Pin Hit Event
Z5 の charge / shot / target-hit entryZ5_ChargeShotHaptic Events
実行時の送信先Address Override

Target は送信先を表す論理フィルタです。Address Override は Event Map や Actor の配線を変更しません。詳細はターゲティングを参照してください。

エディタ上部の Tools → Hapbeat から次を開けます。

  • Hapbeat Settings — Port、App Name、Command Unicast、タイミング、ビルド固定の Address Override を編集します。
  • Hapbeat Runtime Status — この PC に保存する Address Override と、PIE 中の実効 Player / Group、socket 状態を確認します。PIE 外で保存した値は次回の PIE / packaged launch に使われ、PIE 中に保存した値は即時反映されます。

Event Map の Test Play は、同じ保存済み Address Override と build-pinned override を解決してから送信します。Test Play はボタンを押した時点で送信されます。