我正在尝试使用 XR 交互工具包在 Oculus Quest 上制作 VR 游戏,并且我想在用户悬停 UI 元素时配置一个触觉事件。问题是当我使用 XRRayInteractor 悬停 XRGrabInteractable 或 TeleportationArea 但不在画布上时,触觉事件起作用。即使是简单的悬停事件(图片上的 OnHoverUI)也无法在画布上运行。这真的很奇怪,因为我可以与 UI 元素(按钮、滑块等)进行交互。
这是我的 XRRayInteractor 的参数: XRRayInteractor 参数
我已经找到了一个没有这些参数的解决方案,但这真的很烦人。首先,我需要访问控制器(右手和左手)。然后,我向每个我想要触觉反馈的 UI 元素添加了一个“事件触发器”组件。这些触发器有一个调用“OnHoverUI”函数的“Pointer Enter”事件。
void Start()
{
var inputDevices = new List<InputDevice>();
InputDevices.GetDevices(inputDevices);
foreach (var device in inputDevices)
{
if (device.role.ToString() == "LeftHanded")
{
leftHand = device;
}
else if (device.role.ToString() == "RightHanded")
{
rightHand = device;
}
}
}
public void OnHoverUI()
{
if (leftMenuMode) leftHand.SendHapticImpulse(0, 1f, 0.01f);
else if (rightMenuMode) rightHand.SendHapticImpulse(0, 1f, 0.01f);
}
我真的很想使用 XRRayInteractor 的参数,但它们不适用于 UI。
有人知道为什么吗?