Controladores do HP Reverb G2 no Unreal
Introdução
Importante
O Unreal Engine 4.26 e o OpenXR ou o SteamVR são necessários para acessar o plug-in HP Motion Controller, você precisará trabalhar com os controladores HP Reverb G2.
Habilitando o plug-in hp motion controller
O perfil de interação e os mapeamentos do controlador estão no plug-in HP Motion Controller, que deve ser habilitado para expor os mapeamentos do controlador ao sistema de entrada do Unreal.
Portabilidade de um aplicativo OpenXR existente
Se não houver associações de controlador no jogo para o CONTROLADOR hp Realidade Misturada, o runtime do OpenXR tentará remapear as associações existentes para o controlador ativo. Nesse caso, o jogo tem associações Oculus Touch e nenhuma associação HP Realidade Misturada Controller.
Os eventos ainda serão acionados, mas se o jogo precisar usar associações específicas do controlador, como o botão direito do menu, o perfil de interação hp Realidade Misturada deverá ser usado. Várias associações de controlador podem ser especificadas por ação para dar melhor suporte a dispositivos diferentes.
Adicionando mapeamentos de ação de entrada
Defina uma nova ação e mapeie para uma das teclas pressionadas na seção Controlador hp Realidade Misturada.
O controlador HP Reverb G2 também tem uma alça analógica, que pode ser usada nos mapeamentos de eixo com a associação "Eixo do Aperto". Há uma associação Squeeze separada, que deve ser usada para mapeamentos de ação quando o botão de aderência é totalmente pressionado.
Adicionando eventos de entrada
Clique com o botão direito do mouse em um Blueprint e pesquise os novos nomes de ação do sistema de entrada para adicionar eventos para essas ações. Aqui, o Blueprint está respondendo aos eventos com uma cadeia de caracteres de impressão que gera o botão atual e o estado do eixo.
Usando entrada
Os mesmos mapeamentos de ação e eixo nas configurações do projeto de entrada do jogo podem ser usados no C++.
- Crie uma nova classe C++ com a classe File/New C++...
- Criar um peão
- Na solução do Visual Studio do projeto, localize a nova classe Pawn e configure-a para entrada.
- Primeiro, no construtor, defina AutoPossessPlayer como o primeiro jogador a rotear a entrada para o peão.
AMyPawn::AMyPawn()
{
PrimaryActorTick.bCanEverTick = true;
AutoPossessPlayer = EAutoReceiveInput::Player0;
}
- Em seguida, em SetupPlayerInputComponent, associe ações e eventos de eixo aos nomes de ação das configurações de entrada do projeto.
void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("X_Button", IE_Pressed, this, &AMyPawn::XPressed);
PlayerInputComponent->BindAction("L_GripAxis", this, &AMyPawn::LeftGripAxis);
}
- Adicione as funções de retorno de chamada à classe :
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);
}
}
- Atualize o cabeçalho do Peão com as definições de função de retorno de chamada:
private:
void XPressed();
void LeftGripAxis(float AxisValue);
- Compile do Visual Studio para iniciar o editor com o novo peão. Arraste e solte o peão do navegador de conteúdo para o jogo e o peão agora executará os retornos de chamada quando a entrada for pressionada.