Инструментарий взаимодействия XR - событие наведения на элементы пользовательского интерфейса с помощью XRRayInteractor - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь сделать 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, но они не работают с пользовательским интерфейсом.

У кого-то есть идея, почему?

...