头显基本上没有问题,不需要设置,HDM设置为True基本上都是没问题的。手柄就有比较多的讲究了。
1、手柄按键
尽量用按键映射消息事件,将尽量多的按键映射到按钮事件上,以保证各种手柄都可以兼容
Project Settings->Input设置按键映射
设置尽量多的兼容手柄布局按键事件
蓝图中响应按键事件,模拟鼠标Click点击
2、手柄位置
bool AMotionControllerBase::GetControllerRelativeLocationAndRotation(FVector& v, FRotator& r)
{
/*
* HTC VIVE连接StreamVR
* Oculus Quest连接StreamVR
*/
if (ControllerAuto && ControllerAuto->IsTracked())
{
v = ControllerAuto->GetRelativeLocation();
r = ControllerAuto->GetRelativeRotation();
return true;
}
/*
* Huawei VR配合Nolo Air连接StreamVR
*/
else {
TArray<int32> DeviceIds;
TArray<int32> TrackerIds;
USteamVRFunctionLibrary::GetValidTrackedDeviceIds(ESteamVRTrackedDeviceType::Controller, DeviceIds);
USteamVRFunctionLibrary::GetValidTrackedDeviceIds(ESteamVRTrackedDeviceType::Other, TrackerIds);
DeviceIds.Append(TrackerIds);
if (DeviceIds.Num() > 0)
{
USteamVRFunctionLibrary::GetTrackedDevicePositionAndOrientation(DeviceIds[0], v, r);
return true;
}
else {
return false;
}
}
}