Unreal 中的 HP Reverb G2 手柄
入门
重要
需要使用 Unreal Engine 4.26 和 OpenXR(或 SteamVR)才能访问使用 HP Reverb G2 控制器所需的 HP 运动控制器插件。
移植现有的 OpenXR 应用
如果游戏中不存在 HP 混合现实控制器的控制器绑定,则 OpenXR 运行时会尝试将现有绑定重映射到活动控制器。 在本例中,游戏具有 Oculus Touch 绑定,但没有 HP 混合现实控制器绑定。
事件仍将触发,但如果游戏需要使用右侧菜单按钮等特定于控制器的绑定,则必须使用 HP 混合现实交互配置文件。 可以按每个操作指定多个控制器绑定,以更好地支持不同的设备。
添加输入操作映射
定义一个新操作,并映射到 HP 混合现实控制器部分的一个按键。
HP Reverb G2 控制器还有一个模拟手柄,可用于具有“Squeeze Axis”绑定的轴映射。 有一个单独的“Squeeze”绑定,当完全按下手柄按钮时,它应用于操作映射。
添加输入事件
右键单击“蓝图”,然后从输入系统中搜索新的操作名称,以添加这些操作的事件。 此处,蓝图使用输出当前按钮和轴状态的输出字符串来响应事件。
使用输入
可以通过 C++ 使用游戏输入项目设置中的相同操作和轴映射。
- 使用“存档/新建 C++ 类”创建新的 C++ 类...
- 创建 Pawn
- 在项目的 Visual Studio 解决方案中,找到新的 Pawn 类并将其配置为输入。
- 首先,在构造函数中,将 AutoPossessPlayer 设置为第一个将输入路由到 pawn 的播放器。
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 编译以使用新 pawn 启动编辑器。 将 pawn 从内容浏览器拖放到游戏中,现在按下输入时 pawn 将执行回调。