Language:
Page Info
Skill Level:
Engine Version:

Widget Interaction コンポーネント

この機能は実験的なものであり、一部の機能は期待どおりに機能しなかったり、将来のリビジョンで変更される可能性があります。

Widget コンポーネント を使ってゲームワールドで 3D の UI を表示してプレイヤーがそのウィジェットとインタラクションできるようにする場合、Widget Interaction コンポーネントを使ってそのインタラクションを実現できます。

Widget Interaction コンポーネントは、Raycast を使ってワールドに配置されている Widget コンポーネントにヒットしたかを確認し、どのようにインタラクションするかを決めるルールを設定することができます。 このインタラクションは、定義されたキー押下をシミュレートすることによって行われます。例えば、左マウスボタンであるボタンをクリックできれば、他の入力形態に左マウスボタンのクリックをシミュレートするよう伝えられます (コントローラーのボタンを押す、モーション コントローラーのトリガーを押すなど)。

Widget Interaction コンポーネントを追加する

通常は、Widget Interaction コンポーネントを Component (コンポーネント) ウィンドウ からプレイヤー Pawn または Character クラスに追加します。

WidgetInteractionComponent.png

上の図では、銃が向けられている場所に、Widget Interaction コンポーネントが向くようにキャラクターが持っている銃に追加し、アタッチしています。

Widget Interaction のプロパティ リファレンス

Widget Interaction コンポーネントを追加したら [Details (詳細)] パネルからいくつかのプロパティを変更して、どのように機能するかを定義することができます。 TransformRendering、または 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 コンポーネントにカーソルを乗せているかなどの情報を得ることもできます。

WidgetInteractionBlueprint.png

ノード

説明

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

シミュレートしたキーボード キーの press を行います。これを、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 コンポーネントのプロパティも、ゲッターで呼び出すことができます。または、セッター ノードで設定することもできます。

WidgetInteractionVariables.png