Я создал Raycast, который снимает с объекта (не с основной камеры), и я хочу, чтобы он попадал в элементы пользовательского интерфейса. Пример ниже. Пример
Пользовательский интерфейс обведен оранжевым, большая серая плоскость — это тестовый объект, красная голова помещается на голову пользователя, а зеленый — это DrawRay моего raycast, прикрепленного к глазу. Я пытаюсь сделать так, чтобы пользователь смотрел на кнопку пользовательского интерфейса, и raycast мог нажать эту кнопку.
Я играл с Graphic Raycast, но ничего не работает. Серый самолет все еще подвергается воздействию лучей. Я пробовал играть с OnPointerEnter, но дело в том, что мой raycast не является касанием мыши/пальца, а является вторым указателем. Любые идеи, как заставить его работать либо с 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);
}
}
Update
вместоFixedUpdate
2) обернуть егоif (Input.GetKey(KeyCode.Mouse0))
проверкой. Оба они находятся в примере документации, и я не уверен насколько это важно. - person Draco18s no longer trusts SE   schedule 21.05.2018