Unity3D отбрасывает луч из середины экрана

Я хочу направить луч из середины экрана, теперь я делаю это с помощью мыши и устанавливаю мышь посередине, но это может вызвать ошибки. Я использую:

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

Что я должен использовать вместо этого?


person Konrad Linkowski    schedule 07.07.2015    source источник
comment
но это может вызвать ошибку, объясните, что за ошибка?   -  person Ron Beyer    schedule 07.07.2015
comment
Раньше я отключал видимость курсора, но он снова появляется без причины. Наверное, это моя вина.   -  person Konrad Linkowski    schedule 07.07.2015
comment
Возможно, это моя вина, очень ценный урок для любого программиста. Ошибки редко возникают по вине используемых библиотек/API, но обычно это оператор клавиатуры перед вами.   -  person Ron Beyer    schedule 07.07.2015


Ответы (1)


По своему опыту я обнаружил, что луч отладки (луч, который отображается в представлении сцены редактора) очень помогает при работе с лучами.

Vector3 rayOrigin = new Vector3(0.5f, 0.5f, 0f); // center of the screen
float rayLength = 500f;

// actual Ray
Ray ray = Camera.main.ViewportPointToRay(rayOrigin);

// debug Ray
Debug.DrawRay(ray.origin, ray.direction * rayLength, Color.red);

RaycastHit hit;
if (Physics.Raycast(ray, out hit, rayLength))
{
    // our Ray intersected a collider
}

Отладочный луч доступен только в представлении «Сцена» во время игры. Если вы хотите нарисовать линию в игре, загляните в LineRenderer.

person Mihai Dinculescu    schedule 07.07.2015
comment
Он должен испускать красный луч из середины моего экрана, да? - person Konrad Linkowski; 07.07.2015
comment
Хорошо, я думал, что это будет видно в представлении игры, но это не так. Большое спасибо, кстати :) - person Konrad Linkowski; 07.07.2015
comment
Отладочный луч доступен только в представлении «Сцена» во время игры. Если вы хотите нарисовать линию в игре, загляните в LineRenderer docs.unity3d.com/ScriptReference/ LineRenderer.html - person Mihai Dinculescu; 07.07.2015