# CreatePolygons

> Create multiple PolygonGeometry from a set of vertices. The vertices are assumed to produce a closed loop but can describe a concave shape if required. There must be at least 3 vertices. A limit is imposed on small vertex distances so be aware that this overload uses a vertex scale of Vector2.one so consider using the overload which allows you to increase this if required.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.LowLevelPhysics2D](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d.md)
* **Assembly:** UnityEngine.Physics2DModule

## CreatePolygons(ReadOnlySpan\<Vector2>, PhysicsTransform, Allocator)

Create multiple [PolygonGeometry](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/polygongeometry.md) from a set of vertices. The vertices are assumed to produce a closed loop but can describe a concave shape if required. There must be at least 3 vertices. A limit is imposed on small vertex distances so be aware that this overload uses a vertex scale of [Vector2.one](/engine/6000.3/script-reference/unityengine/vector2/one.md) so consider using the overload which allows you to increase this if required.

```csharp
public static NativeArray<PolygonGeometry> CreatePolygons(ReadOnlySpan<Vector2> vertices, PhysicsTransform transform, Allocator allocator = Allocator.Temp)
```

### Parameters

**** (\[ReadOnlySpan\<Vector2>]\(https\://learn.microsoft.com/dotnet/api/system.readonlyspan-1)): The vertices to create the polygons from.**** (\[PhysicsTransform]\(/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicstransform)): The transform used to specify where the geometry is positioned.**** (\[Allocator]\(/engine/6000.3/script-reference/unity/collections/allocator)): The memory allocator to use for the results. This can only be [Allocator.Temp](/engine/6000.3/script-reference/unity/collections/allocator/temp.md), [Allocator.TempJob](/engine/6000.3/script-reference/unity/collections/allocator/tempjob.md) or [Allocator.Persistent](/engine/6000.3/script-reference/unity/collections/allocator/persistent.md).

### Returns

| Type                                                                                               | Description                                                                                                                                                |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [NativeArray\<PolygonGeometry>](/engine/6000.3/script-reference/unity/collections/nativearray1.md) | The created polygon geometries. This NativeArray must be disposed of after use otherwise leaks will occur. The exception to this is if the array is empty. |

## CreatePolygons(ReadOnlySpan\<Vector2>, PhysicsTransform, Vector2, Allocator)

Create multiple [PolygonGeometry](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/polygongeometry.md) from a set of vertices. The vertices are assumed to produce a closed loop but can describe a concave shape if required. There must be at least 3 vertices. A limit is imposed on small vertex distances so it is recommended that scaling is applied here rather than on the returned geometry so geometry is not discarded due to it being invalid.

```csharp
public static NativeArray<PolygonGeometry> CreatePolygons(ReadOnlySpan<Vector2> vertices, PhysicsTransform transform, Vector2 vertexScale, Allocator allocator = Allocator.Temp)
```

### Parameters

**** (\[ReadOnlySpan\<Vector2>]\(https\://learn.microsoft.com/dotnet/api/system.readonlyspan-1)): The vertices to create the polygons from.**** (\[PhysicsTransform]\(/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicstransform)): The transform used to specify where the geometry is positioned.**** (\[Vector2]\(/engine/6000.3/script-reference/unityengine/vector2)): The scaling to be applied to the vertices.**** (\[Allocator]\(/engine/6000.3/script-reference/unity/collections/allocator)): The memory allocator to use for the results. This can only be [Allocator.Temp](/engine/6000.3/script-reference/unity/collections/allocator/temp.md), [Allocator.TempJob](/engine/6000.3/script-reference/unity/collections/allocator/tempjob.md) or [Allocator.Persistent](/engine/6000.3/script-reference/unity/collections/allocator/persistent.md).

### Returns

| Type                                                                                               | Description                                                                                                                                                |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [NativeArray\<PolygonGeometry>](/engine/6000.3/script-reference/unity/collections/nativearray1.md) | The created polygon geometries. This NativeArray must be disposed of after use otherwise leaks will occur. The exception to this is if the array is empty. |

## CreatePolygons(ReadOnlySpan\<Vector2>, PhysicsTransform, Vector2, float, bool, Allocator)

Create multiple [PolygonGeometry](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/polygongeometry.md) from a set of vertices. The vertices are assumed to produce a closed loop but can describe a concave shape if required. There must be at least 3 vertices. A limit is imposed on small vertex distances so it is recommended that scaling is applied here rather than on the returned geometry so geometry is not discarded due to it being invalid.

```csharp
public static NativeArray<PolygonGeometry> CreatePolygons(ReadOnlySpan<Vector2> vertices, PhysicsTransform transform, Vector2 vertexScale, float radius, bool useDelaunay = true, Allocator allocator = Allocator.Temp)
```

### Parameters

**** (\[ReadOnlySpan\<Vector2>]\(https\://learn.microsoft.com/dotnet/api/system.readonlyspan-1)): The vertices to create the polygons from.**** (\[PhysicsTransform]\(/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicstransform)): The transform used to specify where the geometry is positioned.**** (\[Vector2]\(/engine/6000.3/script-reference/unityengine/vector2)): The scaling to be applied to the vertices.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The radius to apply to all generated polygons. Note that this will likely mean that the same polygon region defined by the vertices will not match.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Whether Delaunay tessellation will be used.**** (\[Allocator]\(/engine/6000.3/script-reference/unity/collections/allocator)): The memory allocator to use for the results. This can only be [Allocator.Temp](/engine/6000.3/script-reference/unity/collections/allocator/temp.md), [Allocator.TempJob](/engine/6000.3/script-reference/unity/collections/allocator/tempjob.md) or [Allocator.Persistent](/engine/6000.3/script-reference/unity/collections/allocator/persistent.md).

### Returns

| Type                                                                                               | Description                                                                                                                                                |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [NativeArray\<PolygonGeometry>](/engine/6000.3/script-reference/unity/collections/nativearray1.md) | The created polygon geometries. This NativeArray must be disposed of after use otherwise leaks will occur. The exception to this is if the array is empty. |
