Controller HP Reverb G2 in Unreal
Introduzione
Importante
Unreal Engine 4.26 e OpenXR o SteamVR è necessario per accedere al plug-in HP Motion Controller che sarà necessario usare i controller HP Reverb G2.
Abilitazione del plug-in HP Motion Controller
I mapping del profilo di interazione e del controller si trovano nel plug-in HP Motion Controller, che deve essere abilitato per esporre i mapping del controller al sistema di input di Unreal.
Conversione di un'app OpenXR esistente
Se nel gioco non esistono associazioni di controller per HP Realtà mista Controller, il runtime OpenXR tenterà di rieseguire il mapping delle associazioni esistenti al controller attivo. In questo caso, il gioco ha associazioni Oculus Touch e nessun binding HP Realtà mista Controller.
Gli eventi verranno comunque attivati, ma se il gioco deve usare associazioni specifiche del controller, ad esempio il pulsante di menu destro, è necessario usare il profilo di interazione hp Realtà mista. È possibile specificare più associazioni di controller per azione per supportare meglio dispositivi diversi.
Aggiunta di mapping delle azioni di input
Definire una nuova azione ed eseguire il mapping a uno dei tasti nella sezione HP Realtà mista Controller.
Il controller HP Reverb G2 ha anche un grip analogico, che può essere usato nei mapping dell'asse con l'associazione "Squeeze Axis". È presente un'associazione Di compressione separata, che deve essere usata per i mapping delle azioni quando il pulsante di controllo viene premuto completamente.
Aggiunta di eventi di input
Fare clic con il pulsante destro del mouse su un progetto e cercare i nuovi nomi di azione dal sistema di input per aggiungere eventi per queste azioni. In questo caso il progetto risponde agli eventi con una stringa di stampa che restituisce lo stato corrente del pulsante e dell'asse.
Uso dell'input
Gli stessi mapping di azioni e assi nelle impostazioni del progetto di input del gioco possono essere usati da C++.
- Creare una nuova classe C++ con file/nuova classe C++...
- Creare un pedone
- Nella soluzione Visual Studio del progetto trovare la nuova classe Pawn e configurarla per l'input.
- Innanzitutto, nel costruttore impostare AutoPossessPlayer sul primo giocatore per instradare l'input al pawn.
AMyPawn::AMyPawn()
{
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
}
- Quindi, in SetupPlayerInputComponent associare azioni ed eventi dell'asse ai nomi delle azioni dalle impostazioni di input del progetto.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
- Aggiungere le funzioni di callback alla classe :
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);
}
}
- Aggiornare l'intestazione di Pawn con le definizioni di funzione di callback:
private:
void XPressed();
void LeftGripAxis(float AxisValue);
- Compilare da Visual Studio per avviare l'editor con il nuovo pawn. Trascinare e rilasciare il pawn dal browser del contenuto nel gioco e il pawn eseguirà ora i callback quando viene premuto l'input.