我创建了一个从对象(不是主摄像机)拍摄的 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);
}
}