reckfellENGINE

ConvexPolygonShape2D

Заполненная выпуклая форма из готового контура или облака точек.

На этой странице
class ConvexPolygonShape2DReckfellSharpНаследует Shape2D

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Конструктор
# ConvexPolygonShape2D
C#
public ConvexPolygonShape2D();

Создаёт ресурс без вершин. Назначьте валидный выпуклый контур до использования в запросах или коллайдере; сам ресурс не создаёт физическое тело.

Свойства1

PointsСвойство
# Points
C#
public Vector2[] Points { get; set; }

Упорядоченные локальные вершины выпуклого контура. Setter копирует данные и испускает Changed даже при повторе; выпуклая оболочка не вычисляется. Getter возвращает независимый массив в сохранённом порядке. Внутренняя нормализация обхода для физики не переставляет сохранённые Points. Измените копию и назначьте её обратно, чтобы обновить форму.

Методы5

GetPointsVector2[]
# GetPoints
C#
public Vector2[] GetPoints();

Независимая копия сохранённых локальных вершин. Изменение массива не обновляет ресурс; назначьте изменённые данные через Points или SetPoints.

Возвращает Vector2[]

Независимая копия сохранённых локальных вершин. Изменение массива не обновляет ресурс; назначьте изменённые данные через Points или SetPoints.

SetPointCloud2 перегрузки
# SetPointCloud · 1/2
C#
public void SetPointCloud(Vector2[] pointCloud);

Вычисляет выпуклую оболочку облака точек и передаёт её в SetPoints. Исходный порядок не важен; внутренние точки не сохраняются, вогнутости исчезают. Нужны конечные точки, образующие невырожденный многоугольник. В текущей реализации первая вершина повторяется в конце результата; длина Points не равна числу уникальных углов. Перегрузки массива и ReadOnlySpan дают одинаковую геометрию; вход не сохраняется как общий изменяемый буфер.

Параметры
ИмяТипПо умолчанию
pointCloudVector2[]—
pointCloud

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

# SetPointCloud · 2/2
C#
public void SetPointCloud(ReadOnlySpan<Vector2> pointCloud);

Вычисляет выпуклую оболочку облака точек и передаёт её в SetPoints. Исходный порядок не важен; внутренние точки не сохраняются, вогнутости исчезают. Нужны конечные точки, образующие невырожденный многоугольник. В текущей реализации первая вершина повторяется в конце результата; длина Points не равна числу уникальных углов. Перегрузки массива и ReadOnlySpan дают одинаковую геометрию; вход не сохраняется как общий изменяемый буфер.

Параметры
ИмяТипПо умолчанию
pointCloudReadOnlySpan<Vector2>—
pointCloud

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

SetPoints2 перегрузки
# SetPoints · 1/2
C#
public void SetPoints(Vector2[] points);

Заменяет вершины готовым выпуклым контуром в порядке обхода и испускает Changed, включая повторные данные. Не сортирует облако и не делает вогнутый контур выпуклым. Передавайте минимум три неколлинеарные конечные вершины без самопересечений и нулевых рёбер. Данные копируются; одинаковая геометрия поддерживается для обоих направлений обхода. Для неупорядоченных точек используйте SetPointCloud.

Параметры
ИмяТипПо умолчанию
pointsVector2[]—
points

Готовый выпуклый контур в порядке обхода: минимум три неколлинеарные конечные вершины, без самопересечений и нулевых рёбер. Это не облако точек.

# SetPoints · 2/2
C#
public void SetPoints(ReadOnlySpan<Vector2> points);

Заменяет вершины готовым выпуклым контуром в порядке обхода и испускает Changed, включая повторные данные. Не сортирует облако и не делает вогнутый контур выпуклым. Передавайте минимум три неколлинеарные конечные вершины без самопересечений и нулевых рёбер. Данные копируются; одинаковая геометрия поддерживается для обоих направлений обхода. Для неупорядоченных точек используйте SetPointCloud.

Параметры
ИмяТипПо умолчанию
pointsReadOnlySpan<Vector2>—
points

Готовый выпуклый контур в порядке обхода: минимум три неколлинеарные конечные вершины, без самопересечений и нулевых рёбер. Это не облако точек.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.