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
}

Лъчът за отстраняване на грешки е достъпен само в изгледа Scene, докато играта работи. Ако искате да нарисувате линия в играта, погледнете в LineRenderer.

person Mihai Dinculescu    schedule 07.07.2015
comment
Трябва да хвърля червен лъч от средата на моя екран, нали? - person Konrad Linkowski; 07.07.2015
comment
Добре, мислех, че ще се вижда в изгледа на играта, но не е така. Благодаря ти много между другото :) - person Konrad Linkowski; 07.07.2015
comment
Лъчът за отстраняване на грешки е наличен само в изгледа Scene, докато играта работи. Ако искате да нарисувате линия в играта, погледнете в LineRenderer docs.unity3d.com/ScriptReference/ LineRenderer.html - person Mihai Dinculescu; 07.07.2015