Unity VR Controller UI Взаимодействие - PullRequest
0 голосов
/ 27 февраля 2019

Я сейчас на грани психического расстройства.Я часами строил свою собственную лазерную указку, заставлял ее снимать радиопередачи и пытался заставить ее работать с моим пользовательским интерфейсом.Но это не так.По крайней мере, не правильно.

Что работает: Raycast и рисовать линии.

Где я борюсь: Прямо сейчас у меня есть два варианта.A) Стандартная кнопка интерфейса и куб без сетки рендеринга к нему.Это заставляет кнопку исчезать через анимацию в соответствии со сценарием кнопки.НО это не разрешит события нажатия кнопки On!Поэтому я добавил на кнопку триггер события, который ... действительно вызовет события "указатель ввода"!Но не события «щелчка указателя»: (

Итак, что я подумал: мой щелчок должен быть реализован неправильно! Чтобы проверить это: B) Добавлен триггер событий для куба, это коллайдер кнопок.Установите его в «щелчок указателя».И тада!оно работает!BUUUUT это убивает анимацию кнопки!Почему?

Благодарен за любые идеи!Я бы также принял во внимание новые начальные точки, если у вас есть хорошая подсказка!

Следующий выпуск - ползунки.Любые советы о том, как заставить их работать?

Спасибо за любую помощь !!

Приветствия Фло

Редактировать: текущий код:

        {//Record this data and tell the object that we are pointing at them (OnPointerEnter)
        eventData.pointerEnter = rayHit.transform.gameObject;
        ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerEnterHandler);


        //If trigger becomes state down ...
        if (SteamVR_Actions._default.GrabPinch.GetStateDown(handType) && eventData.pointerEnter != null)
        {
            //...tell the object that we have pressed it (OnPointerDown)
            eventData.pointerPressRaycast = eventData.pointerCurrentRaycast;
            eventData.pointerPress = ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerDownHandler);
        }
        //Otherwise, if we just released the primary input axis...
        else if (SteamVR_Actions._default.GrabPinch.GetStateUp(handType))
        {
            //...tell the object than we have stopped pressing it (OnPointerUp)
            if (eventData.pointerPress != null)
                ExecuteEvents.ExecuteHierarchy(eventData.pointerPress, eventData, ExecuteEvents.pointerUpHandler);

            //...finally, if we pressed and released the same object, then we have clicked it (OnPointerClick)
            if (eventData.pointerPress == eventData.pointerEnter)
                ExecuteEvents.ExecuteHierarchy(eventData.pointerEnter, eventData, ExecuteEvents.pointerClickHandler);

            eventData.pointerPress = null;
        }
    }

1 Ответ

0 голосов
/ 27 февраля 2019

Без кода трудно сказать, но я думаю, что вы переопределяете события щелчка указателя своими собственными?Это объясняет, почему исчезли анимации.Вы можете решить это, вызвав событие в базовом классе.base.OnPointerClick() или что-то в этом роде.

...