Вот пример:
Делал это таким образом:
Синтаксис:
Используется 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);
//строю линию по точкам
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 полностью.
Как возможно это сделать?