Я пытаюсь сделать VR-игру на Oculus Quest с помощью XR Interaction Toolkit, и я хотел бы настроить событие hapti c, когда пользователь наводит на него элемент пользовательского интерфейса. Проблема в том, что событие hapti c работает, когда я наведу курсор на XRGrabInteractable или TeleproductionArea с XRRayInteractor, но не на холсте. Даже простое событие наведения (OnHoverUI на картинке) не работает на холсте. Это действительно странно, потому что я могу взаимодействовать с элементами пользовательского интерфейса (кнопками, ползунками, ...).
Вот параметры моего XRRayInteractor: XRRayInteractor параметры
I уже нашел решение, работающее без этих параметров, но это действительно раздражает. Сначала мне нужно было получить доступ к контроллерам (правой и левой руки). Затем я добавил компонент «Event Trigger» к каждому элементу пользовательского интерфейса, для которого я хочу получить обратную связь c. Эти триггеры имеют событие «Pointer Enter», вызывающее функцию «OnHoverUI».
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, но они не работают с пользовательским интерфейсом.
У кого-то есть идея, почему?