# AddBox(Vector2, Vector2, float, float)

> Adds a box shape ( PhysicsShapeType2D.Polygon ) to the shape group.

## Definition

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

```csharp
public int AddBox(Vector2 center, Vector2 size, float angle = 0, float edgeRadius = 0)
```

### Parameters

**** (\[Vector2]\(/engine/6000.7/script-reference/unityengine/vector2)): The center point of the box shape. This is analogous to [\_offset](/engine/6000.7/script-reference/unityengine/collider2d/offset.md).**** (\[Vector2]\(/engine/6000.7/script-reference/unityengine/vector2)): The size of the box. This is identical to [\_size](/engine/6000.7/script-reference/unityengine/boxcollider2d/size.md).**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The angle in degrees the box should be rotated around the `center`.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The radius extending around the edges of the box. This is identical to [\_edgeRadius](/engine/6000.7/script-reference/unityengine/boxcollider2d/edgeradius.md).

### Returns

| Type                                                       | Description                                                                                                                                                                                                        |
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | Returns the shape index the shape was added to in the [PhysicsShapeGroup2D](/engine/6000.7/script-reference/unityengine/physicsshapegroup2d.md). This index is used as the main reference when retrieving a shape. |

### Remarks

A box shape is a form of convex polygon with four vertices and an `edgeRadius` that extends around the four edges. The ability to add a box shape is a convenience only and does not represent an actual primitive shape.

**NOTE**: A box forms a closed shape and does have an interior therefore its interior is detectable by physics queries etc.

### Examples

```csharp
using UnityEngine;
using UnityEngine.Assertions;

public class Example : MonoBehaviour
{
    void Start()
    {
        CreateShape();
        GetShapeFromCollider();
    }

    // Create a custom shape.
    void CreateShape()
    {
        // Create a shape group.
        var shapeGroup = new PhysicsShapeGroup2D();

        // Add a Box (polygon with four vertices).
        // NOTE: Both the angle and edgeRadius arguments are optional.
        var shapeIndex = shapeGroup.AddBox
            (
                center: new Vector2(3f, 2f),
                size: new Vector2(1f, 1f),
                angle: 0f,
                edgeRadius: 0f
            );

        // Fetch the actual shape created.
        var physicsShape = shapeGroup.GetShape(shapeIndex);

        // Validate what we created.
        Assert.AreEqual(PhysicsShapeType2D.Polygon, physicsShape.shapeType);
        Assert.AreEqual(4, physicsShape.vertexCount);
        Assert.AreApproximatelyEqual(0f, physicsShape.radius);
    }

    // Get a physics shape from a Collider.
    void GetShapeFromCollider()
    {
        // Fetch the collider.
        var collider = GetComponent<BoxCollider2D>();

        // If the collider is not active and enabled then we'll get no shapes.
        // Let's just quit if not.
        if (!collider.isActiveAndEnabled)
            return;

        // Configure the collider.
        collider.offset = new Vector2(3f, 2f);
        collider.size = new Vector2(1f, 1f);

        // Create a shape group.
        var shapeGroup = new PhysicsShapeGroup2D();

        // Get the collider shapes.
        collider.GetShapes(shapeGroup);

        // Fetch the actual shape.
        var physicsShape = shapeGroup.GetShape(0);

        // Validate what we retrieved.
        Assert.AreEqual(PhysicsShapeType2D.Polygon, physicsShape.shapeType);
        Assert.AreEqual(4, physicsShape.vertexCount);
    }
}
```
