Kontrolery HP Reverb G2 w Unreal
Wprowadzenie
Ważne
Aparat Unreal Engine 4.26 i OpenXR lub SteamVR jest wymagany do uzyskania dostępu do wtyczki KONTROLERA RUCHU HP, którą należy pracować z kontrolerami HP Reverb G2.
Włączanie wtyczki kontrolera ruchu HP
Mapowania profilu interakcji i kontrolera znajdują się w wtyczki kontrolera ruchu HP, która musi być włączona, aby uwidocznić mapowania kontrolera w systemie danych wejściowych Unreal.
Przenoszenie istniejącej aplikacji OpenXR
Jeśli w grze nie istnieją powiązania kontrolera HP Mixed Reality Controller, środowisko uruchomieniowe OpenXR spróbuje ponownie zamapować istniejące powiązania na aktywny kontroler. W tym przypadku gra ma powiązania Oculus Touch i nie ma powiązań kontrolera HP Mixed Reality.
Zdarzenia będą nadal uruchamiane, ale jeśli gra musi korzystać z powiązań specyficznych dla kontrolera, takich jak przycisk menu po prawej stronie, należy użyć profilu interakcji HP Mixed Reality. Wiele powiązań kontrolera można określić na akcję, aby lepiej obsługiwać różne urządzenia.
Dodawanie mapowań akcji wejściowych
Zdefiniuj nową akcję i zamapuj na jeden z klawiszy w sekcji KONTROLER MIXED REALITY HP.
Kontroler HP Reverb G2 ma również uchwyt analogowy, który można użyć w mapowaniach osi z powiązaniem "Oś wyciśnięcia". Istnieje oddzielne powiązanie Wycisnąć, które powinno być używane do mapowań akcji, gdy przycisk uchwytu jest w pełni naciskany.
Dodawanie zdarzeń wejściowych
Kliknij prawym przyciskiem myszy strategię i wyszukaj nowe nazwy akcji z systemu wejściowego, aby dodać zdarzenia dla tych akcji. W tym miejscu strategia odpowiada na zdarzenia z ciągiem wydruku wyjściowym bieżącego przycisku i stanu osi.
Korzystanie z danych wejściowych
Te same mapowania akcji i osi w ustawieniach projektu wejściowego gry mogą być używane z języka C++.
- Utwórz nową klasę języka C++ z klasą File/New C++...
- Tworzenie pionka
- W rozwiązaniu programu Visual Studio projektu znajdź nową klasę Pawn i skonfiguruj ją pod kątem danych wejściowych.
- Najpierw w konstruktorze ustaw wartość AutoPossessPlayer na pierwszy odtwarzacz, aby kierować dane wejściowe do pionu.
AMyPawn::AMyPawn()
{
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
}
- Następnie w obszarze SetupPlayerInputComponent, powiąż akcje i zdarzenia osi z nazwami akcji z ustawień wejściowych projektu.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
- Dodaj funkcje wywołania zwrotnego do klasy:
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);
}
}
- Zaktualizuj nagłówek Pawn przy użyciu definicji funkcji wywołania zwrotnego:
private:
void XPressed();
void LeftGripAxis(float AxisValue);
- Skompiluj z programu Visual Studio, aby uruchomić edytor za pomocą nowego pionka. Przeciągnij i upuść pionek z przeglądarki zawartości do gry, a pionek będzie teraz wykonywać wywołania zwrotne po naciśnięciu danych wejściowych.