HP Reverb G2-controllers in Unreal
Aan de slag
Belangrijk
Unreal Engine 4.26 en OpenXR of SteamVR zijn vereist voor toegang tot de HP Motion Controller-invoegtoepassing. U moet werken met de HP Reverb G2-controllers.
Hp Motion Controller-invoegtoepassing inschakelen
De toewijzingen van het interactieprofiel en de controller bevinden zich in de HP Motion Controller-invoegtoepassing, die moet worden ingeschakeld om de controllertoewijzingen beschikbaar te maken voor het invoersysteem van Unreal.
Een bestaande OpenXR-app overzetten
Als de game geen controllerbindingen bevat voor de HP Mixed Reality Controller, probeert de OpenXR-runtime bestaande bindingen opnieuw toe te kennen aan de actieve controller. In dit geval heeft de game Oculus Touch-bindingen en geen HP Mixed Reality Controller-bindingen.
De gebeurtenissen worden nog steeds geactiveerd, maar als de game gebruik moet maken van controllerspecifieke bindingen, zoals de rechtermenuknop, moet het HP Mixed Reality interactieprofiel worden gebruikt. Per actie kunnen meerdere controllerbindingen worden opgegeven om verschillende apparaten beter te ondersteunen.
Toewijzingen voor invoeracties toevoegen
Definieer een nieuwe actie en wijs deze toe aan een van de toetsdrukken in de sectie HP Mixed Reality Controller.
De HP Reverb G2 controller heeft ook een analoge grip, die kan worden gebruikt in de astoewijzingen met de "Squeeze Axis" binding. Er is een afzonderlijke knijpbinding, die moet worden gebruikt voor actietoewijzingen wanneer de gripknop volledig wordt ingedrukt.
Invoerevenementen toevoegen
Klik met de rechtermuisknop op een blauwdruk en zoek naar de nieuwe actienamen van het invoersysteem om gebeurtenissen voor deze acties toe te voegen. Hier reageert de blauwdruk op de gebeurtenissen met een afdrukreeks die de huidige knop- en asstatus uitvoert.
Invoer gebruiken
Dezelfde actie- en astoewijzingen in de instellingen voor het invoerproject van de game kunnen worden gebruikt vanuit C++.
- Een nieuwe C++-klasse maken met file/new C++ class...
- Een pion maken
- Zoek in de Visual Studio-oplossing van het project de nieuwe pawn-klasse en configureer deze voor invoer.
- Stel eerst in de constructor AutoPossessPlayer in op de eerste speler om invoer naar de pion te routeren.
AMyPawn::AMyPawn()
{
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
}
- Bind vervolgens in SetupPlayerInputComponent acties en asgebeurtenissen aan de actienamen uit de invoerinstellingen van het project.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
- Voeg de callback-functies toe aan de klasse:
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);
}
}
- Werk de header van het pawn bij met de definities van de callback-functie:
private:
void XPressed();
void LeftGripAxis(float AxisValue);
- Compileer vanuit Visual Studio om de editor te starten met de nieuwe pion. Sleep de pion vanuit de inhoudsbrowser naar de game en de pion voert nu de callbacks uit wanneer de invoer wordt ingedrukt.