Искажение расстояния удара Unity3d Raycast

Я делаю лазерный датчик для симулятора в Unity3d; что мне нужно сделать, это отбросить лучи из точки под разными углами, а затем получить расстояния от другого программного обеспечения вне Unity. Слева сцена единства, где красные линии представляют собой брошенные лучи, справа - луч, визуализированный в другой программе. Программа только получает расстояния и углы от центральной точки. Как видите, точки, воспроизведенные в программе, искажены.

Это код единства, который я использовал, чтобы получить расстояния:

RaycastHit hit;

float max_dst = 20.0f*5;
int steps = 1080;
Vector3 raydir = Quaternion.Euler(0.0f, 135.0f,0.0f)*transform.forward;
Quaternion rot = Quaternion.Euler(0.0f, -270.0f/steps,0.0f);

Vector3 startPos = transform.position + offset;

for(int i=0; i<steps; i++) {

    if (Physics.Raycast (startPos, raydir, out hit, max_dst))
        dists[i] = hit.distance;

    raydir = rot*raydir;
}

Есть ли у вас предложения по устранению искажения?

Спасибо

0 ответов

Другие вопросы по тегам