フォース フィードバックとは、ゲーム内で起こるフォース (力) をプレイヤーに伝えるために、ゲームでよく使用されるデバイスの振動を指します。この機能は、ゲームパッドやコントローラーの「ランブル」もしくはコントローラー振動とも呼ばれます。フォース フィードバックを使う例としては、ゲーム内で爆発が起きた際の衝撃波をシミュレートすることが挙げられます。これにより、プレイヤーの没入感をさらなる次元に押し上げることができます。
フォース フィードバックは、iOS や Android、コンソール向けの入力コントローラーなど、広く使用されているさまざまなプラットフォームでサポートされています。
特定のフィードバック機能のサポートは、プラットフォームによって異なります。詳細については、お使いのプラットフォームの開発ドキュメントを参照してください。
フォース フィードバック エフェクトの概要
Force Feedback Effect (フォース フィードバック エフェクト) アセットには、特定のフォース フィードバック エフェクトの定義に使用するプロパティが含まれています。これらのプロパティにより、さまさまな状況に応じてフォース フィードバックをカスタマイズすることができます。
チャンネルの詳細
フォース フィードバック エフェクトには複数のチャンネルを含めることができ、それぞれの チャンネル で異なるエフェクトを再生することができます。たとえば、あるチャンネルでコントローラーの右側で大きな長い振動を再生しつつ、別のチャンネルでコントローラーの左側で小さな短いバーストを再生することができます。
それぞれのチャンネルには、そのチャンネルのエフェクトの再生方法を制御する以下のプロパティが含まれています。
チャンネル名 |
説明 |
---|---|
Affects Left Large |
true の場合、左側の大きなモーターを使用してエフェクトを再生します。 |
Affects Left Small |
true の場合、左側の小さなモーターを使用してエフェクトを再生します。 |
Affects Right Large |
true の場合、右側の大きなモーターを使用してエフェクトを再生します。 |
Affects Right Small |
true の場合、右側の小さなモーターを使用してエフェクトを再生します。 |
Curve |
時間の経過に沿ったエフェクトの強度を制御するカーブです。これによって振動のパターンが定義されます。値を 0.0 より大きく設定すると振動し、0.0 より小さく設定すると振動しません。 |
フォース フィードバック カーブ
各チャンネルのエフェクトのパターンはカーブによって制御されます。このカーブには、内部のカーブ エディタから次の方法でキーを加えることができます。
右クリックして、キーを追加するオプションを選択する。
カーブのグラフ内をダブルクリックして内部のカーブ エディタを起動する。
デバイスごとのオーバーライド
Unreal Engine でフォース フィードバック アセットを使用する際は、それぞれのプラットフォームによって、バイブレーション モーターやフィードバック システムを機能させるための実装が異なることに注意してください。フォース フィードバック アセットでは、複数のプラットフォームをサポートするために Per Device Overrides (デバイスごとのオーバーライド) を使用します。
このデバイスごとのオーバーライドは、それぞれのプラットフォームに向けて異なるフィードバック設定を行うためのメソッドをユーザーに提供する抽象化レイヤーです。たとえば、Xbox コントローラーには強力なバイブレーションを適用して、PlayStation コントローラーにはよりきめ細やかで微妙なバイブレーションを適用することなどができます。
これらの設定を変更するには、目的のフォース フィードバック エフェクトを選択して [Details (詳細)] パネル の [Per Device Overrides (デバイスごとのオーバーライド)] に移動します。
デバイス プロパティ
デバイス プロパティ は、ライト カラーの表示やハプティック トリガーの抵抗など、入力デバイスのさまざまな物理プロパティを表しています。
デバイス プロパティ タイプ |
説明 |
---|---|
Audio Based Vibration |
入力デバイスのスピーカーにサウンドを再生します。これをサポートするプラットフォームでは、左と右のオーディオ チャンネルがそれぞれコントローラーの左側と右側を表すバイブレーションの形でこのサウンドが再生されます。 これは実験段階の機能であり、現時点では PS5 DualSense コントローラーのみで機能します。この機能を使用するには、コンフィギュレーションに次を追加する必要があります。
|
Device Color (Curve) |
入力デバイスのライト カラーを時間の経過とともにカーブに沿って変化させます。 このプロパティには、各プラットフォームでそれぞれ異なる動作を行う可能性のあるプラットフォーム固有の実装が含まれています。 |
Device Color (Static) |
入力デバイスのカラーを静的カラーに設定します。このプロパティの評価が完了している場合、デバイス カラーはリセットされません。これは、デバイス プロパティ カラーを設定するために一度だけ有効にするエフェクトと考えることができます。 このプロパティには、各プラットフォームでそれぞれ異なる動作を行う可能性のあるプラットフォーム固有の実装が含まれています。 |
Trigger Feedback |
シンプルなトリガー フィードバックを設定します。 このプロパティには、各プラットフォームでそれぞれ異なる動作を行う可能性のあるプラットフォーム固有の実装が含まれています。 |
Trigger Resistance |
開始値と終了値の間でトリガーが押されている間、トリガーに線形の抵抗を提供します。 このプロパティには、各プラットフォームでそれぞれ異なる動作を行う可能性のあるプラットフォーム固有の実装が含まれています。 |
Trigger Vibration |
トリガー振動を設定します。 このプロパティには、各プラットフォームでそれぞれ異なる動作を行う可能性のあるプラットフォーム固有の実装が含まれています。 |
詳細については、「デバイス プロパティ」を参照してください。
持続時間
フォース フィードバック エフェクトの持続時間は、すべてのチャンネルのカーブにおける最後のキーの位置に基づいて自動的に計算されます。たとえば、3 つのチャンネルがあり、それぞれの最後のキーが 1.25
、1.5
、1.75
の値に設定されている場合、全体的なエフェクトの持続時間は 1.75
になります。
フォース フィードバック エフェクト アセットを作成する
フォース フィードバック エフェクト アセットは コンテンツ ブラウザ を使って作成します。
コンテンツ ブラウザ で [+ Add (+ 追加)] をクリックして、[Input (入力)] > [Force Feedback Effect (フォース フィードバック エフェクト)] を選択します。作成したアセットを開きます。
アセットにはデフォルトで 1 つのチャンネルが含まれていますが、さらに追加することもできます。それぞれのチャンネルで、影響を及ぼす対象の 4 つの出力を組み合わせて選択します。
Shift キーを押しながらカーブ上の [Left Mouse Button (マウスの左ボタン)] をクリックして、1 つまたは複数のキーを追加します。
値を直接入力するか、キーをカーブ エディタにドラッグすることで、それぞれのキーを操作します。
キー間のカーブを調整するには、カーブのその部分を右クリックしてそのカーブの機能を変更し、その後に接線を調整します。
フォース フィードバックを再生する
エディタでプレビューする
フォース フィードバック エフェクトをエディタ内でプレビューするには、そのエフェクトをマウスオーバーした際に、そのアイコンの中央部分に表示される「再生」ボタンをクリックします。
プレーヤーで直接再生する
フォース フィードバックは基本の PlayerController
クラスで実装されています。このため、フォース フィードバックをターゲット デバイスまたはコントローラーで再生するには、ローカル プレイヤー コントロールへのアクセスが必要になります。
フォース フィードバックをブループリントで再生する
Get Player Controller ノードか保存済みの参照のいずれかを使って、プレイヤー コントローラーへの参照を取得します。
その参照の出力ピンからドラッグして、コンテキスト メニューに「
Play Force Feedback
」と入力して検索し、Client Play Force Feedback を選択します。サーバー上で呼び出した場合、フォース フィードバックはそれを所有するクライアントにレプリケートされます。
使用するフォース フィードバック エフェクトをノード上で直接指定するか、つながっている変数を使って指定します。
エフェクトをループさせる場合は Looping をオンにします。
(任意) エフェクトのユニークな名前を Tag フィールドで設定します。この機能ではエフェクトを停止できるようになります。同じ名前のエフェクトがすでに再生されている場合はそれが停止されて、代わりに新しいエフェクトが再生されます。
フォース フィードバックを C++ で再生する
ローカル プレイヤー コントローラーで ClientPlayForceFeedback
を呼び出すことができます。
void ClientPlayForceFeedback
(
class UForceFeedbackEffect * ForceFeedbackEffect,
FForceFeedbackParameters Params
)
こうすることで、エフェクトのループの有無を指定したり、任意のエフェクト名を設定したりして、フォース フィードバック エフェクトを使用できるようになります。名前を指定した場合、もとのそのフォース フィードバック エフェクトが終了する前に、同じ名前を持つ別のフォース フィードバック エフェクトが再生されると、もとのエフェクトが即座に停止して、代わりにその新しいエフェクトが再生されます。
ワールド位置で再生する
意図したソース エフェクトのワールド位置に フォース フィードバック コンポーネント を配置することができます。これにより、エフェクトを見ているプレイヤーからの距離に応じて強度が変化するフォース フィードバック エフェクトが再生されます。
フォース フィードバック コンポーネントはフォース フィードバック エフェクトをコマンドで再生しますが、ワールド内にも物理的な位置を持っています。サウンドやライトと同様に、プレイヤーが体感するフォースの強度は、データで定義された減衰設定に沿って、ソースからのプレイヤーの距離に応じて変化します。
フォース フィードバック コンポーネントは、ソース コードまたはブループリントを使ってあらゆるアクタにアタッチでき、ゲームプレイ中に動的に追加することができます。次のユーティリティ関数を使用することもできます。
UGameplayStatics::SpawnForceFeedbackAtLocation
: 特定のワールド位置でスポーンしますUGameplayStatics::SpawnForceFeedbackAttached
: 特定の既存のコンポーネントにアタッチします
これらの関数はスポーンされたフォース フィードバック コンポーネントを返すため、その操作を継続することができます。ただし、そのコンポーネントでのエフェクトの再生が終了した後に、そのコンポーネントが不要になる場合は、Auto Destroy ブール オプションを使って、エフェクトの終了時にそのコンポーネントを削除できます。