HP Reverb G2 — контроллеры в Unreal
Начало работы
Важно!
Unreal Engine 4.26 и OpenXR или SteamVR необходимы для доступа к подключаемому модулю контроллера движения HP, который вам понадобится для работы с контроллерами HP Reverb G2.
Включение подключаемого модуля контроллера движения HP
Сопоставления профиля взаимодействия и контроллера находятся в подключаемом модуле КОНТРОЛЛЕРа движения HP, который должен быть включен для предоставления сопоставлений контроллера системе ввода Unreal.
Перенос существующего приложения OpenXR
Если в игре отсутствуют привязки контроллера для контроллера HP Смешанная реальность, среда выполнения OpenXR попытается повторно сопоставить существующие привязки с активным контроллером. В этом случае в игре есть привязки Oculus Touch и нет привязок контроллера HP Смешанная реальность.
События по-прежнему срабатся, но если в игре необходимо использовать привязки контроллера, например кнопку правого меню, необходимо использовать профиль взаимодействия hp Смешанная реальность. Для каждого действия можно указать несколько привязок контроллера для лучшей поддержки различных устройств.
Добавление сопоставлений действий ввода
Определите новое действие и сопоставьте его с одним из нажатий клавиш в разделе HP Смешанная реальность Controller .
Контроллер HP Reverb G2 также имеет аналоговый захват, который можно использовать в сопоставлениях осей с привязкой "Сжатие оси". Существует отдельная привязка Сжатия, которую следует использовать для сопоставления действий при полном нажатии кнопки захвата.
Добавление входных событий
Щелкните правой кнопкой мыши схему и найдите новые имена действий из системы ввода, чтобы добавить события для этих действий. Здесь схема отвечает на события строкой печати, выводя текущее состояние кнопки и оси.
Использование входных данных
Те же сопоставления действий и осей во входных параметрах проекта игры можно использовать из C++.
- Создайте новый класс C++ с помощью файла или нового класса C++...
- Создание пешки
- В решении 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);
- Выполните компиляцию из Visual Studio, чтобы запустить редактор с новой пешкой. Перетащите пешку из браузера содержимого в игру, и пешка теперь будет выполнять обратные вызовы при нажатии входных данных.