【发布时间】:2019-06-04 13:56:11
【问题描述】:
使用: Unity 2018.4.1 LTS & Oculus GO
我正在使用凝视指针与 Unity UI 进行交互。
这应该在您拉动触发器时发生,这正是我在脚本中定义的方式:在 go-controller 的触摸板上向左或向右滑动也会触发点击。我自己没有定义这个,这只是发生的事情,我不知道如何解决它。
我发现并摆弄了this thread 和this thread 中提出的解决方案。
但是,这些解决方案都没有为我提供一种方法来摆脱这些滑动点击,同时保持活跃的索引触发点击。
我的输入管理器(索引触发器与 UI 的交互似乎发生在 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 发生冲突。我在这里想念什么?如何区分触发点击和触摸板滑动?!
【问题讨论】:
标签: android unity3d virtual-reality oculus