Я сейчас на грани психического расстройства.Я часами строил свою собственную лазерную указку, заставлял ее снимать радиопередачи и пытался заставить ее работать с моим пользовательским интерфейсом.Но это не так.По крайней мере, не правильно.
Что работает: 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;
}
}