Physics.Raycast всегда терпит неудачу, когда встроен с -parentHWND - PullRequest
0 голосов
/ 07 января 2019

Я встроил приложение Unity в родительское приложение WPF. Однако у этого были некоторые странные побочные эффекты.

У меня есть метод обновления, который постоянно проверяет, нажата ли кнопка мыши 0, и, если это так, выполняет Raycast, чтобы попытаться найти этот объект. Это показано здесь:

if (Input.GetMouseButtonDown(0))
{
    RaycastHit hit;

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    if (Physics.Raycast(ray, out hit))
    {
        //Some code here...
    }
}

Этот raycast всегда терпит неудачу. Тем не менее, когда это делается внутри редактора единства (т.е. нажатия кнопки воспроизведения в двигателе), он работает нормально.

Другое странное поведение заключается в том, что при использовании автономного плеера ни один из элементов управления не работает. У меня есть другой метод, чтобы вращать камеру вокруг объекта:

if (Input.GetMouseButton(0))
    {
        float h = rotateSpeed * Input.GetAxis("Mouse X");
        float v = rotateSpeed * Input.GetAxis("Mouse Y");

        if (cameraOrbit.transform.eulerAngles.z + v <= 0.1f || cameraOrbit.transform.eulerAngles.z + v >= 179.9f)
            v = 0;

        cameraOrbit.transform.eulerAngles = new Vector3(cameraOrbit.transform.eulerAngles.x, cameraOrbit.transform.eulerAngles.y + h, cameraOrbit.transform.eulerAngles.z);
    }

Который отлично работает как в редакторе, так и при встраивании, но не при использовании проигрывателя Unity. Есть ли что-то, что я делаю здесь неправильно, что вызывает это нежелательное и противоречивое поведение?

...