В 3D-разработке плоскость может использоваться для ограничения области возрождения, области движения или любой области, которая удовлетворяет вашим потребностям. Поиск углов этой области может облегчить наши усилия по ограничению движения или поиску случайной точки на ней для создания новых объектов в игре.

В Unity мы можем получить локальные координаты вершин плоскости, просто используя
gameObject.GetComponent<MeshFilter>().sharedMesh.vertices;

Это вернет нам массив из 121 точки. Плоскость Unity состоит из 11 строк и 11 столбцов координат, что составляет до 121 точки. Каждая строка составляет 11 точек, поэтому точки 0, 10, 110 и 120 дают нам угловые точки.

Но… Координаты локальные для плоскости, их нужно преобразовать в глобальные точки.

В этом нам на помощь приходит Функция. Он преобразует локальные точки относительно данного преобразования в глобальные точки. Благодаря этому мы можем обновлять угловые точки во время выполнения со всеми видами поворотов, включая дочерние сценарии.

Сводка кода

VerticeList = new List(GetComponent().sharedMesh.vertices);
Мы получаем все вершины, определенные на плоской сетке.

VerticeListToShow.Add(transform.TransformPoint(VerticeList[0])); VerticeListToShow.Add(transform.TransformPoint(VerticeList[10])); VerticeListToShow.Add(transform.TransformPoint(VerticeList[110])); VerticeListToShow.Add(transform.TransformPoint(VerticeList[120]));

Локальные угловые точки преобразуются в глобальные с помощью метода transform.TransformPoint().

С помощью OnDrawGizmos позиции углов обновляются в каждом кадре, даже если изменяется трансформация плоскости.

Вы можете найти полный проект Unity здесь.

В следующем посте я напишу о поиске случайной точки на плоскости с помощью угловых точек и барицентрических координат.

Первоначально опубликовано на http://devsplorer.wordpress.com 3 августа 2019 г.