Dela via


HP Reverb G2-styrenheter i Unreal

Komma igång

Viktigt

Unreal Engine 4.26 och antingen OpenXR eller SteamVR krävs för att komma åt HP Motion Controller-plugin-programmet som du måste arbeta med HP Reverb G2-styrenheterna.

Aktivera HP Motion Controller-plugin-program

Interaktionsprofilen och kontrollantmappningarna finns i plugin-programmet HP Motion Controller, som måste vara aktiverat för att exponera kontrollantmappningarna för Unreals indatasystem.

Aktivera OpenXRHPController-plugin-programmet

Porta en befintlig OpenXR-app

Om det inte finns några kontrollantbindningar i spelet för HP-Mixed Reality Controller försöker OpenXR-körningen mappa om befintliga bindningar till den aktiva kontrollanten. I det här fallet har spelet Oculus Touch-bindningar och inga HP-Mixed Reality Controller-bindningar.

Mappa om befintliga bindningar när det inte finns några kontrollantbindningar

Händelserna utlöses fortfarande, men om spelet behöver använda kontrollantspecifika bindningar, till exempel höger menyknapp, måste HP-Mixed Reality interaktionsprofil användas. Flera kontrollantbindningar kan anges per åtgärd för att bättre stödja olika enheter.

Använda flera kontrollantbindningar

Lägga till mappningar för indataåtgärder

Definiera en ny åtgärd och mappa till en av tangenttryckningarna i avsnittet HP Mixed Reality Controller.

Definiera nya åtgärder och mappningar

HP Reverb G2-styrenheten har också ett analogt grepp, som kan användas i axelmappningarna med bindningen "Squeeze Axis". Det finns en separat Squeeze-bindning som ska användas för åtgärdsmappningar när greppknappen är helt tryckt.

Använda Squeeze-axelbindningar

Lägga till indatahändelser

Högerklicka på en skiss och sök efter de nya åtgärdsnamnen från indatasystemet för att lägga till händelser för dessa åtgärder. Här svarar Skissen på händelserna med en utskriftssträng som matar ut den aktuella knappen och axeltillståndet.

Skiss som svarar på händelser och matar ut aktuell knapp och axeltillstånd

Använda indata

Samma åtgärds- och axelmappningar i spelets indataprojektinställningar kan användas från C++.

  1. Skapa en ny C++-klass med fil/ny C++-klass...

Skapa en ny C++-klass

  1. Skapa en pawn

Skapa en pawn

  1. I projektets Visual Studio-lösning letar du upp den nya pawn-klassen och konfigurerar den för indata.
  • I konstruktorn ställer du först in AutoPossessPlayer som den första spelaren som dirigerar indata till pawn.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • I SetupPlayerInputComponent binder du sedan åtgärder och axelhändelser till åtgärdsnamnen från projektets indatainställningar.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Lägg till återanropsfunktionerna i klassen:
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);
    }
}
  • Uppdatera pawn-huvudet med definitionerna för återanropsfunktionen:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Kompilera från Visual Studio för att starta redigeraren med den nya pawn. Dra och släpp pawn från innehållswebbläsaren till spelet så kör pawn återanropen när indata trycks ned.

Se även