Unreal の HP Reverb G2 コントローラー
作業の開始
重要
HP Reverb G2 コントローラーを操作するために必要な HP Motion Controller プラグインにアクセスするには、Unreal Engine 4.26 と、OpenXR または SteamVR のいずれかが必要です。
HP Motion Controller プラグインの有効化
対話プロファイルとコントローラー マッピングは HP Motion Controller プラグイン内にあり、Unreal の入力システムにコントローラー マッピングを公開するにはこのプラグインを有効にする必要があります。
既存の 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++ から使用できます。
- [ファイル]、[New C++ Class...] (新しい C++ クラス...) の順に選択して、新しい C++ クラスを作成します。
- ポーンを作成する
- プロジェクトの 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);
- Visual Studio からコンパイルして、新しいポーンでエディターを起動します。 ポーンをコンテンツ ブラウザーからドラッグしてゲームにドロップすると、入力が押されたときにコールバックが実行されます。