Unreal の HP Reverb G2 コントローラー

作業の開始

重要

HP Reverb G2 コントローラーを操作するために必要な HP Motion Controller プラグインにアクセスするには、Unreal Engine 4.26 と、OpenXR または SteamVR のいずれかが必要です。

HP Motion Controller プラグインの有効化

対話プロファイルとコントローラー マッピングは HP Motion Controller プラグイン内にあり、Unreal の入力システムにコントローラー マッピングを公開するにはこのプラグインを有効にする必要があります。

OpenXRHPController プラグインの有効化

既存の OpenXR アプリの移植

HP Mixed Reality Controller のコントローラー バインドがゲームに存在しない場合、OpenXR ランタイムでは、アクティブなコントローラーに対する既存のバインドの再マッピングを試みます。 この場合、ゲームには Oculus Touch バインドが含まれ、HP Mixed Reality Controller バインドは含まれません。

コントローラー バインドが存在しない場合の既存のバインドの再マップ

イベントは引き続き発生しますが、ゲームでコントローラー固有のバインド (右メニュー ボタンなど) を使用する必要がある場合は、HP Mixed Reality 相互作用プロファイルを使用する必要があります。 アクションごとに複数のコントローラー バインドを指定して、さまざまなデバイスをより適切にサポートできます。

複数のコントローラー バインドの使用

入力アクション マッピングの追加

新しいアクションを定義し、[HP Mixed Reality Controller] セクションのキー タッチのいずれか 1 つにマップします。

新しいアクションとマッピングの定義

HP Reverb G2 コントローラーには、アナログ グリップも用意されています。これは、"Squeeze Axis" バインドによる軸マッピングで使用できます。 グリップ ボタンが完全に押された場合にアクション マッピングに使用する必要がある別個の Squeeze バインドがあります。

スクイズ軸バインドの使用

入力イベントの追加

ブループリントを右クリックし、入力システムから新しいアクション名を検索して、これらのアクションのイベントを追加します。 次の図のブループリントでは、現在のボタンと軸の状態を出力する印刷文字列を使用してイベントに応答しています。

イベントに応答し、現在のボタンと軸の状態を出力するブループリント

入力の使用

ゲームの入力プロジェクト設定と同じアクションと軸のマッピングを C++ から使用できます。

  1. [ファイル]、[New C++ Class...] (新しい C++ クラス...) の順に選択して、新しい C++ クラスを作成します。

新しい C++ クラスの作成

  1. ポーンを作成する

ポーンの作成

  1. プロジェクトの Visual Studio ソリューションで、新しいポーン クラスを見つけて、それを入力用に構成します。
  • まず、コンストラクターで、AutoPossessPlayer を最初のプレイヤーに設定し、入力をポーンにルーティングします。
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • 次に、SetupPlayerInputComponent で、プロジェクトの入力設定からアクションと軸イベントをアクション名にバインドします。
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • コールバック関数をクラスに追加します。
void AMyPawn::XPressed()
{
    UE_LOG(LogTemp, Log, TEXT("X Pressed"));
}

void AMyPawn::LeftGripAxis(float AxisValue)
{
    if(AxisValue != 0.0f) 
    {
        UE_LOG(LogTemp, Log, TEXT("Left Grip Axis Valule: %f"), AxisValue);
    }
}
  • コールバック関数の定義でポーンのヘッダーを更新します。
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Visual Studio からコンパイルして、新しいポーンでエディターを起動します。 ポーンをコンテンツ ブラウザーからドラッグしてゲームにドロップすると、入力が押されたときにコールバックが実行されます。

関連項目