HP Reverb G2-Controller in Unreal

Erste Schritte

Wichtig

Unreal Engine 4.26 und OpenXR oder SteamVR sind erforderlich, um auf das HP Motion Controller-Plug-In zuzugreifen, das Sie für die Arbeit mit den HP Reverb G2-Controllern benötigen.

Aktivieren des HP Motion Controller-Plug-Ins

Das Interaktionsprofil und die Controllerzuordnungen befinden sich im HP Motion Controller-Plug-In, das aktiviert werden muss, um die Controllerzuordnungen für das Eingabesystem von Unreal verfügbar zu machen.

Aktivieren des OpenXRHPController-Plug-Ins

Portieren einer vorhandenen OpenXR-App

Wenn im Spiel für den HP Mixed Reality Controller keine Controllerbindungen vorhanden sind, versucht die OpenXR-Runtime, vorhandene Bindungen dem aktiven Controller neu zuzuordnen. In diesem Fall verfügt das Spiel über Oculus Touch-Bindungen und keine HP Mixed Reality Controllerbindungen.

Neumapping vorhandener Bindungen, wenn keine Controllerbindungen vorhanden sind

Die Ereignisse werden weiterhin ausgelöst, aber wenn das Spiel controllerspezifische Bindungen verwenden muss, z. B. die rechte Menüschaltfläche, muss das HP-Mixed Reality-Interaktionsprofil verwendet werden. Pro Aktion können mehrere Controllerbindungen angegeben werden, um verschiedene Geräte besser zu unterstützen.

Verwenden mehrerer Controllerbindungen

Hinzufügen von Eingabeaktionszuordnungen

Definieren Sie eine neue Aktion, und ordnen Sie eine Zuordnung zu einem der Tastendrücke im Abschnitt HP Mixed Reality Controller zu.

Definieren neuer Aktionen und Zuordnungen

Der HP Reverb G2 Controller verfügt auch über einen analogen Griff, der in den Achsenzuordnungen mit der Bindung "Squeeze Axis" verwendet werden kann. Es gibt eine separate Squeeze-Bindung, die für Aktionszuordnungen verwendet werden sollte, wenn die Grifftaste vollständig gedrückt ist.

Verwenden der Squeeze-Achsenbindungen

Hinzufügen von Eingabeereignissen

Klicken Sie mit der rechten Maustaste auf eine Blaupause, und suchen Sie im Eingabesystem nach den neuen Aktionsnamen, um Ereignisse für diese Aktionen hinzuzufügen. Hier antwortet die Blaupause auf die Ereignisse mit einer Druckzeichenfolge, die den aktuellen Schaltflächen- und Achsenzustand ausgibt.

Blaupause, die auf Ereignisse reagiert und den aktuellen Schaltflächen- und Achsenzustand ausgibt

Verwenden von Eingaben

Die gleichen Aktions- und Achsenzuordnungen in den Eingabeprojekteinstellungen des Spiels können von C++ verwendet werden.

  1. Erstellen Sie eine neue C++-Klasse mit File/New C++-Klasse...

Erstellen einer neuen C++-Klasse

  1. Erstellen eines Pfotens

Erstellen eines Pfands

  1. Suchen Sie in der Visual Studio-Projektmappe des Projekts nach der neuen Pawn-Klasse, und konfigurieren Sie sie für die Eingabe.
  • Legen Sie zunächst im Konstruktor AutoPossessPlayer auf den ersten Player fest, um die Eingabe an den Pawn weiterzuleiten.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Binden Sie dann in SetupPlayerInputComponent Aktionen und Achsenereignisse an die Aktionsnamen aus den Eingabeeinstellungen des Projekts.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Fügen Sie der -Klasse die Rückruffunktionen hinzu:
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);
    }
}
  • Aktualisieren Sie den Pawn-Header mit den Rückruffunktionsdefinitionen:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Kompilieren Sie aus Visual Studio, um den Editor mit dem neuen Pawn zu starten. Ziehen Sie den Pawn aus dem Inhaltsbrowser in das Spiel, und der Pawn führt nun die Rückrufe aus, wenn die Eingabe gedrückt wird.

Weitere Informationen