Почему Unity рисует луч в неправильном направлении, если заданы исходные координаты и конечные координаты? - PullRequest
0 голосов
/ 12 февраля 2019

Image of ray and camera position Changing of the angle between Main char and the raycase Я создаю игру и пишу сценарий, который не позволит камере проходить сквозь стены.(Белый) луч проверяет наличие столкновений.Он должен идти от Главного персонажа к камере, но он идет в другом направлении, совершенно отличном от того, который был дан.Кроме того, когда я двигаю своего Главного персонажа, угол луча также перемещается.

Я пытался изменить мои координаты назначения так:

gameObject.transform.position + New Vector3(...); 

Однако результат был похожим.

bool HasHit()
    {
//check if ray hits a collider
         return (Physics.Raycast(gameObject.transform.position, TestForHit.transform.position, out hit));
    }
 void DrawLines()
    {
//debug the ray (hits wrong collider)
        Debug.DrawRay(gameObject.transform.position, TestForHit.transform.position);
    }

Я ожидаю, что луч проверяеттолько для коллайдеров между главным персонажем и камерой, как прямая линия.

1 Ответ

0 голосов
/ 12 февраля 2019

Вы должны использовать Debug.DrawLine, поскольку вы используете начальное местоположение и пункт назначения .


Примечание: *Функция 1010 * использует начальное местоположение и направление в качестве первых двух параметров и не может указывать длину (она будет длиться вечно).Если у вас есть два местоположения, A и B, и вы хотите провести луч между ними, вам нужно получить направление , чтобы нарисовать луч:

Vector3 A;
Vector3 B;
Vector3 direction = (B - A).normalized;
Debug.DrawRay(A, direction);

То же самоеидет на Physics.RayCast.Вы используете destination в качестве второго параметра, когда вы должны использовать direction .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...