Приведите x количество лучей во всех направлениях в Unity - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь привести x (500) лучей в круговом направлении (360) в единицу. так что 500 лучей попадают на равное расстояние, чтобы сформировать полный круг. Я пытался что-то, но это оставляет некоторую область, я не знаю почему. как мне сделать полный круг?

мой код

    float number_of_rays = 500;
    float angle = 360 / number_of_rays;
    float cast_angle = 0;

    for (int i = 0; i < number_of_rays; i++)
    {
        var dir = Quaternion.Euler(0, 0, cast_angle) * transform.right;            
        RaycastHit2D hit = Physics2D.Raycast(transform.position, dir, Mathf.Infinity);
        if (hit)
        {
            points.Add(hit.point);
            Debug.DrawLine(transform.position, hit.point, Color.green,1f);
        }
        cast_angle += angle;
    }

Result of the code

1 Ответ

0 голосов
/ 02 марта 2020

Учтите, что, возможно, он просто не находит попадание лучей в пространстве, в котором вы не рисуете свои лучи.

Этот код работает для меня.

float number_of_rays = 500;
float totalAngle = 360;

float delta = totalAngle / number_of_rays;
Vector3 pos = transform.position;
const float magnitude = 5;

for (int i = 0; i < number_of_rays; i++)
{
    var dir = Quaternion.Euler(0, 0, i * delta) * transform.right;            
    Debug.DrawRay(pos, dir * magnitude, Color.green);
}

enter image description here

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