3

我创建了一个从对象(不是主摄像机)拍摄的 Raycast,我希望它能够击中 UI 元素。下面的例子。 例子

橙色轮廓的 UI,灰色大平面是一个测试对象,红色的头放在用户的头上,绿色是我的 raycast 的 DrawRay 附加到眼睛上。我正在努力做到这一点,以便用户查看 UI 按钮并且 raycast 可以点击该按钮。

我一直在玩Graphic raycast,但似乎没有任何效果。灰色平面仍被射线投射击中。我尝试使用 OnPointerEnter,但问题是我的眼睛光线投射不是鼠标/手指触摸,而是第二个指针。任何想法如何使它与 isPointerOverGameObject 或 Graphic Raycaster 或任何其他方法一起工作?或者如何创建第二个将作为眼睛光线投射的指针?当前代码如下。

private void FixedUpdate()
{
    GraphicRaycaster gr = this.GetComponent<GraphicRaycaster>();

    PointerEventData pointerData = new PointerEventData(EventSystem.current);

    pointerData.position = Input.mousePosition;

    List<RaycastResult> results = new List<RaycastResult>();
    gr.Raycast(pointerData, results);
    //EventSystem.current.RaycastAll(pointerData, results);
    if (results.Count > 0)
    {
        if (results[0].gameObject.tag == "Test tag")
        {
            Debug.Log("test");
        }
    }




    //----- Failed Graphic raycast experiments above; working RaycastHit below --------


    RaycastHit hit;


        Debug.DrawRay(transform.position, transform.forward * -10000f, Color.green);

        if (Physics.Raycast(transform.position, transform.forward * -1, out hit))
        {

            Debug.Log(hit.transform.name);
        }



}
4

1 回答 1

1

如果您想与画布元素进行适当的交互,这实际上要复杂得多。

我建议您不要尝试自己推出解决方案,而是查看一些已经制定的解决方案。大多数 VR 工具包都有自己的实现,您可以查看VRTK的示例场景 007 - Interactions。您不必使用 VR 来使用它 - 只需使用后备 SDK。

有关其工作原理的更多详细信息,我可能会向您指出来自 Oculus 的文章:Unity 示例框架(有点过时)。

于 2018-05-21T12:06:57.157 回答