Как Raycast может взаимодействовать с элементами Unity Canvas UI? - PullRequest
0 голосов
/ 21 мая 2018

Я создал 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);
        }



}

1 Ответ

0 голосов
/ 21 мая 2018

Это на самом деле намного сложнее, если вы хотите правильно взаимодействовать с элементами холста.

Я предлагаю вам не пытаться самостоятельно развернуть решение, а взглянуть на некоторые уже сделанные решения.Большинство VR-инструментариев имеют свои собственные реализации, вы можете взглянуть на пример сцены VRTK 007 - Взаимодействия.Вам не нужно использовать VR, чтобы использовать его - просто используйте запасной SDK.

Для получения дополнительной информации о том, как это работает, я мог бы указать на статью из Oculus: Unity Sample Framework (немного устарело).

...