HP Reverb G2 — контроллеры в Unreal

Начало работы

Важно!

Unreal Engine 4.26 и OpenXR или SteamVR необходимы для доступа к подключаемому модулю контроллера движения HP, который вам понадобится для работы с контроллерами HP Reverb G2.

Включение подключаемого модуля контроллера движения HP

Сопоставления профиля взаимодействия и контроллера находятся в подключаемом модуле КОНТРОЛЛЕРа движения HP, который должен быть включен для предоставления сопоставлений контроллера системе ввода Unreal.

Включение подключаемого модуля OpenXRHPController

Перенос существующего приложения OpenXR

Если в игре отсутствуют привязки контроллера для контроллера HP Смешанная реальность, среда выполнения OpenXR попытается повторно сопоставить существующие привязки с активным контроллером. В этом случае в игре есть привязки Oculus Touch и нет привязок контроллера HP Смешанная реальность.

Переназначение существующих привязок, если привязки контроллера отсутствуют

События по-прежнему срабатся, но если в игре необходимо использовать привязки контроллера, например кнопку правого меню, необходимо использовать профиль взаимодействия hp Смешанная реальность. Для каждого действия можно указать несколько привязок контроллера для лучшей поддержки различных устройств.

Использование нескольких привязок контроллера

Добавление сопоставлений действий ввода

Определите новое действие и сопоставьте его с одним из нажатий клавиш в разделе HP Смешанная реальность Controller .

Определение новых действий и сопоставлений

Контроллер HP Reverb G2 также имеет аналоговый захват, который можно использовать в сопоставлениях осей с привязкой "Сжатие оси". Существует отдельная привязка Сжатия, которую следует использовать для сопоставления действий при полном нажатии кнопки захвата.

Использование привязок оси сжатия

Добавление входных событий

Щелкните правой кнопкой мыши схему и найдите новые имена действий из системы ввода, чтобы добавить события для этих действий. Здесь схема отвечает на события строкой печати, выводя текущее состояние кнопки и оси.

Схема отвечает на события и выводит текущее состояние кнопки и оси

Использование входных данных

Те же сопоставления действий и осей во входных параметрах проекта игры можно использовать из C++.

  1. Создайте новый класс C++ с помощью файла или нового класса C++...

Создание нового класса C++

  1. Создание пешки

Создание пешки

  1. В решении Visual Studio проекта найдите новый класс Pawn и настройте его для ввода.
  • Во-первых, в конструкторе задайте autoPossessPlayer для первого игрока, чтобы направить входные данные в пешку.
AMyPawn::AMyPawn()
{
    PrimaryActorTick.bCanEverTick = true;

    AutoPossessPlayer = EAutoReceiveInput::Player0;
}
  • Затем в SetupPlayerInputComponent привяжите действия и события оси к именам действий из входных параметров проекта.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
    Super::SetupPlayerInputComponent(PlayerInputComponent);

    PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
    PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
  • Добавьте функции обратного вызова в класс :
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);
    }
}
  • Обновите заголовок Pawn с помощью определений функций обратного вызова:
private:
    void XPressed();
    void LeftGripAxis(float AxisValue);
  1. Выполните компиляцию из Visual Studio, чтобы запустить редактор с новой пешкой. Перетащите пешку из браузера содержимого в игру, и пешка теперь будет выполнять обратные вызовы при нажатии входных данных.

См. также раздел