
Widget コンポーネント を使ってゲームワールドで 3D の UI を表示してプレイヤーがそのウィジェットとインタラクト可能にするには、Widget Interaction コンポーネントを使ったインタラクションを作成します。
Widget Interaction コンポーネントは、Raycast を使ってワールドに配置されている Widget コンポーネントにヒットしたかを確認し、どのようにインタラクションするかを決めるルールを設定することができます。 このインタラクションは、定義されたキー押下をシミュレートすることによって行われます。例えば、左マウスボタンであるボタンをクリックできれば、他の入力形態に左マウスボタンのクリックをシミュレートするよう伝えられます (コントローラーのボタンを押す、モーション コントローラーのトリガーを押すなど)。
「3D ウィジェットのインタラクションの作成」と「仮想キーボードのインタラクションを作成する」では段階的な手順に例を付けて説明しています。参照してください。
Widget Interaction コンポーネントを追加する
通常は、Widget Interaction コンポーネントを Component (コンポーネント) ウィンドウ からプレイヤー ポーン または Character クラスに追加します。

上の図では、銃が向けられている場所に、Widget Interaction コンポーネントが向くようにキャラクターが持っている銃に追加し、アタッチしています。
Widget Interaction のプロパティ リファレンス
Widget Interaction コンポーネントを追加したら [Details (詳細)] パネルからいくつかのプロパティを変更して、動作を指定することができます。 Transform、Rendering、または Sockets のようなコンポーネントの共通プロパティ以外に、以下のプロパティは特に Widget Interaction コンポーネントで使用されるものです。
オプション | 説明 |
---|---|
インタラクション | |
Virtual User Index | Virtual User Index を表します。Widget Interaction コンポーネントは、この Virtual User Index を使って機能します。Virtual User Indexは、フォーカスのステートを個別にキャプチャーし、処理します。各 Virtual User は、異なる Index で表され、別個のキャプチャーとフォーカスのステートを維持するようにします。各 Widget Interaction コンポーネントがオンラインになると、割り当てられた Virtual User Index のスレートに通知し、実際のスレート ユーザーであるかのようにイベントを送ることができます。 |
Pointer Index | 各ユーザーがシミュレートした Virtual Controller や、Virtual Finger Tips は、異なる Pointer Index を使うようにします。 |
Interaction Distance | コンポーネントが widget コンポーネントとインタラクションできるゲーム内の単位です。 |
Interaction Source | どこから投影し、トレースを開始するかを決めます (World、 Mouse、 Center Screen、または Custom)。これを Custom に設定すると、SetCustomHitResult() を呼び出して、カスタムのヒット テストの結果をどこでも必要な場所から与える必要があります。 |
Enable Hit Testing | インタラクションするコンポーネントがヒット テスト (Automatic または Custom) を行い、カーソルを乗せることをシミュレートしようとするか否かを指定します。キーボードをエミュレートしようとすると、その仮想キーボードは仮想ポインター デバイスとは分けられます。このオプションをオフにして、そのポインター デバイスに対して 2 つめのインタラクション コンポーネントを使うようにします。 |
デバッグ | |
Show Debug | デバッグ インタラクションを支援するためにデバッグ行とヒット範囲を示します。 |
Debug Color | Show Debug が有効な場合に、デバッグ行の色を決めます。 |
Events | |
On Hovered Widget Changed | カーソルを乗せた Widget コンポーネントが変化するときに呼び出されます。このインタラクション コンポーネントは、スレート レベルで機能します。そのため、ヒット結果がどの Widget であるかについて何もレポートできません。 |
Widget Interaction ブループリントのノード リファレンス
Widget Interaction コンポーネントは、様々なタイプの入力方法をシミュレートできます (press、release、 または press + release)。これは、ブループリントのコンテキスト メニューの [Interaction] セクションにあります。 Widget Interaction コンポーネントによって登録される最後のヒット位置や、ワールドの Widget コンポーネントにカーソルを乗せているかなどの情報を得ることもできます。

ノード | 説明 |
---|---|
Get Hovered Widget Component | 現在、カーソルが乗っている Widget コンポーネントを取得します。 |
Get Last Hit Result | コンポーネントが生成した最終ヒット結果を取得します。設定されている場合、カスタム ヒット結果を戻します。 |
Is Over Focusable Widget | ヒット結果にあるウィジェットがフォーカス可能であれば、 true を戻します。SupportsKeyboardFocus() に対して true を戻す Slate ウィジェットです。 |
Is Over Hit Test Visible Widget | ヒット結果にあるウィジェットがヒット テストを可視にする可視設定であれば、 true を戻します。GetVisibility().IsHitTestVisible() に対して true を戻す Slate ウィジェットです。 |
Is Over Interactable Widget | ヒット結果にあるウィジェットがインタラクティブであれば、 true を戻します。IsInteractble() に対して true を戻す Slate ウィジェットです。 |
Press and Release Key | シミュレートしたキーボード キーの press (押下) と release (解放) の両方を行います。 |
Press Key | シミュレートしたキーボード キーの押下を行います。これを、a-z|A-Z には使わないでください。スレートの Editable Textbox (編集可能なテキストボックス) のようなものでは、特定の文字がウィジェットに送られていることを示すために OnKeyChar が呼び出されることが求められるからです。このような場合は代わりに SendKeyChar を使用してください。 |
Press Pointer Key | マウス / ポインタでのキーの押下をシミュレートします。ほとんどの場合、指定されるキーは、マウスボタンですが、どのようなキーでも使用可能です。ウィジェットが特殊なアクションをすることを示すために他のキーを送るなど高度な使用例がサポートされています。 |
Release Key | キーボードから解放されたかのようにキーを解放します。 |
Release Pointer Key | Press Pointer Key と同様に、マウス / ポインタ上のキーの解放をシミュレートします。ほとんどの場合、指定されるキーは、マウスボタンですが、どのようなキーでも使用可能です。 |
Scroll Wheel | 最後にヒットした結果にあるウィジェットに scroll wheel event を送ります。 |
Send Key Char | 文字列にリストされている各キーに対して OnKeyChar event をシミュレートすることで文字のリストをウィジェットに送ります。 |
Set Custom Hit Result | カスタム ヒット結果を設定します。これは、Interaction Source が Custom に設定されている場合に限り、考慮されます。 |
Widget Interaction コンポーネントのプロパティも、ゲッターでの呼び出しやセッター ノードでの設定が可能です。
