Использование:
Unity 2018.4.1 LTS &
Oculus GO
Я использую указатель взгляда для взаимодействия с Unity UI.
Это должно происходить, когда вы нажимаете триггер, именно так, как я его определил в своем скрипте: проведите пальцем влево или вправо по сенсорной панели go-контроллера, однако также запускает щелчки. Я не определил это сам, просто так происходит, и я не могу понять, как обойти это.
Я нашел и возился с решениями, предложенными в этой теме и этой теме .
Однако ни одно из этих решений не дало мне способа избавиться от этих щелчков, сохраняя при этом щелчки триггеров индекса.
Мой Менеджер ввода (Взаимодействие индекса с пользовательским интерфейсом в OVRInputModule, кажется, происходит):
private void Update()
{
if (OVRInput.GetDown(OVRInput.Button.PrimaryTouchpad) || OVRInput.GetDown(OVRInput.Button.Two))
{
ToggleVidInterface();
}
if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger))
{
StartCoroutine(TouchpadCounter());
}
}
IEnumerator TouchpadCounter()
{
int secondsForCounting = 2;
float startTime = Time.time;
int touchCount = 0;
while (Time.time - startTime <= secondsForCounting && OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
{
if (OVRInput.GetDown(OVRInput.Button.PrimaryTouchpad))
{
touchCount++;
Debug.Log("touchCount for Admin Menue: " + touchCount);
}
if (touchCount >= 3)
{
ActivateAdminMenue();
}
yield return null;
}
yield return null;
}
Часть OVRInputModule (я не знаю, правильная ли это часть):
/// <summary>
/// Get state of button corresponding to gaze pointer
/// </summary>
/// <returns></returns>
virtual protected PointerEventData.FramePressState GetGazeButtonState()
{
var pressed = Input.GetKeyDown(gazeClickKey) || OVRInput.GetDown(joyPadClickButton);
var released = Input.GetKeyUp(gazeClickKey) || OVRInput.GetUp(joyPadClickButton);
#if UNITY_ANDROID && !UNITY_EDITOR
// On Gear VR the mouse button events correspond to touch pad events. We only use these as gaze pointer clicks
// on Gear VR because on PC the mouse clicks are used for actual mouse pointer interactions.
pressed |= Input.GetMouseButtonDown(0);
released |= Input.GetMouseButtonUp(0);
#endif
if (pressed && released)
return PointerEventData.FramePressState.PressedAndReleased;
if (pressed)
return PointerEventData.FramePressState.Pressed;
if (released)
return PointerEventData.FramePressState.Released;
return PointerEventData.FramePressState.NotChanged;
}
Возиться с Android, если условие просто включает или отключает щелчок целиком (триггер и сенсорная панель). Что мне здесь не хватает? Как я могу разделить щелчок триггера и касание сенсорной панели?!