ConvexPolygonShape2D
Заполненная выпуклая форма из готового контура или облака точек.
ConvexPolygonShape2D описывает заполненный выпуклый многоугольник в локальных координатах. Новый ресурс не содержит вершин. Чтобы создать коллайдер, назначьте заполненную форму свойству Shape у CollisionShape2D, который является непосредственным дочерним Entity нужного CollisionObject2D.
Выберите способ ввода:
- Points или SetPoints: готовые вершины в порядке обхода границы. Контур должен быть выпуклым, без самопересечений, с минимум тремя неколлинеарными конечными вершинами. Не передавайте произвольно перемешанные точки.
- SetPointCloud: неупорядоченные точки. Вычисляет внешнюю выпуклую оболочку; точки внутри неё и вогнутости не сохраняются. Поэтому оболочка не подходит для точного воспроизведения силуэта с выемками.
SetPoints сохраняет исходный порядок вершин. Для физики направление обхода нормализуется на копии, поэтому чтение Points может сохранить любой из двух обходов. SetPointCloud в текущей реализации возвращает контур с повтором первой вершины в конце: у квадратного облака в проверке Points.Length=5, хотя уникальных углов четыре. Не выводите число уникальных углов из длины массива.
C# getter возвращает копию. Чтобы изменить одну вершину, получите Points, измените массив и назначьте его обратно. Изменение исходного массива после SetPoints также не меняет форму. Setter испускает Changed даже при повторных данных. GetRect() возвращает локальные границы всех вершин, без трансформации пользователя ресурса.
Проверены оба вида перегрузок (массив и ReadOnlySpan), копирование, обход, оболочка, Changed и прямое пересечение с кругом внутри квадрата. В отличие от замкнутого ConcavePolygonShape2D, выпуклая форма заполнена. Динамика тел, производительность и редакторская отрисовка не проверялись.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ConvexPolygonShape2DКонструктор
public ConvexPolygonShape2D();Создаёт ресурс без вершин. Назначьте валидный выпуклый контур до использования в запросах или коллайдере; сам ресурс не создаёт физическое тело.
Свойства1
PointsСвойство
public Vector2[] Points { get; set; }Упорядоченные локальные вершины выпуклого контура. Setter копирует данные и испускает Changed даже при повторе; выпуклая оболочка не вычисляется. Getter возвращает независимый массив в сохранённом порядке. Внутренняя нормализация обхода для физики не переставляет сохранённые Points. Измените копию и назначьте её обратно, чтобы обновить форму.
Методы5
GetPointsVector2[]
public Vector2[] GetPoints();Независимая копия сохранённых локальных вершин. Изменение массива не обновляет ресурс; назначьте изменённые данные через Points или SetPoints.
Vector2[]Независимая копия сохранённых локальных вершин. Изменение массива не обновляет ресурс; назначьте изменённые данные через Points или SetPoints.
SetPointCloud2 перегрузки
public void SetPointCloud(Vector2[] pointCloud);Вычисляет выпуклую оболочку облака точек и передаёт её в SetPoints. Исходный порядок не важен; внутренние точки не сохраняются, вогнутости исчезают. Нужны конечные точки, образующие невырожденный многоугольник. В текущей реализации первая вершина повторяется в конце результата; длина Points не равна числу уникальных углов. Перегрузки массива и ReadOnlySpan дают одинаковую геометрию; вход не сохраняется как общий изменяемый буфер.
| Имя | Тип | По умолчанию |
|---|---|---|
pointCloud | Vector2[] | — |
pointCloudНеупорядоченные конечные точки для внешней выпуклой оболочки; набор должен образовывать многоугольник ненулевой площади. Внутренние точки и вогнутости не сохраняются.
public void SetPointCloud(ReadOnlySpan<Vector2> pointCloud);Вычисляет выпуклую оболочку облака точек и передаёт её в SetPoints. Исходный порядок не важен; внутренние точки не сохраняются, вогнутости исчезают. Нужны конечные точки, образующие невырожденный многоугольник. В текущей реализации первая вершина повторяется в конце результата; длина Points не равна числу уникальных углов. Перегрузки массива и ReadOnlySpan дают одинаковую геометрию; вход не сохраняется как общий изменяемый буфер.
| Имя | Тип | По умолчанию |
|---|---|---|
pointCloud | ReadOnlySpan<Vector2> | — |
pointCloudНеупорядоченные конечные точки для внешней выпуклой оболочки; набор должен образовывать многоугольник ненулевой площади. Внутренние точки и вогнутости не сохраняются.
SetPoints2 перегрузки
public void SetPoints(Vector2[] points);Заменяет вершины готовым выпуклым контуром в порядке обхода и испускает Changed, включая повторные данные. Не сортирует облако и не делает вогнутый контур выпуклым. Передавайте минимум три неколлинеарные конечные вершины без самопересечений и нулевых рёбер. Данные копируются; одинаковая геометрия поддерживается для обоих направлений обхода. Для неупорядоченных точек используйте SetPointCloud.
| Имя | Тип | По умолчанию |
|---|---|---|
points | Vector2[] | — |
pointsГотовый выпуклый контур в порядке обхода: минимум три неколлинеарные конечные вершины, без самопересечений и нулевых рёбер. Это не облако точек.
public void SetPoints(ReadOnlySpan<Vector2> points);Заменяет вершины готовым выпуклым контуром в порядке обхода и испускает Changed, включая повторные данные. Не сортирует облако и не делает вогнутый контур выпуклым. Передавайте минимум три неколлинеарные конечные вершины без самопересечений и нулевых рёбер. Данные копируются; одинаковая геометрия поддерживается для обоих направлений обхода. Для неупорядоченных точек используйте SetPointCloud.
| Имя | Тип | По умолчанию |
|---|---|---|
points | ReadOnlySpan<Vector2> | — |
pointsГотовый выпуклый контур в порядке обхода: минимум три неколлинеарные конечные вершины, без самопересечений и нулевых рёбер. Это не облако точек.