Построение луча с множественным отражением

Программирование на Юнити.

Построение луча с множественным отражением

Сообщение d@n34l 12 фев 2017, 11:03

Необходимо построить что-то вроде лазера(луч), при наведении которого на объект он бы отражался. И не один раз, а пока встречает объекты на своем пути
Вот пример:
Изображение

Делал это таким образом:
Синтаксис:
Используется csharp
        //direction каждый раз меняется, зависит от координат мышки, например
        Ray2D ray = new Ray2D(start, direction);
        var hit = Physics2D.Raycast(ray.origin, ray.direction);
        bool flag = hit.collider != null;
        var points = new List<Vector3>();
        points.Add(start);
        while (flag)
        {
            ray = new Ray2D(hit.point, Vector2.Reflect(ray.direction, hit.normal));
            hit = Physics2D.Raycast(ray.origin, ray.direction, 1000);
            flag = hit.collider != null;
            points.Add(ray.origin);
        }
        points.Add(ray.direction + ray.origin);
        //строю линию по точкам
 

Это сильно нагружает метод Update из-за чего виснет Unity полностью.

Как возможно это сделать?
d@n34l
UNец
 
Сообщения: 1
Зарегистрирован: 12 фев 2017, 10:39

Re: Построение луча с множественным отражением

Сообщение waruiyume 12 фев 2017, 11:37

int i=0;
while (flag && i++<100500)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10