# Bounds

> Represents an axis aligned bounding box.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine](/engine/6000.7/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<Bounds>](https://learn.microsoft.com/dotnet/api/system.iequatable-1), [IFormattable](https://learn.microsoft.com/dotnet/api/system.iformattable)

```csharp
public struct Bounds : IEquatable<Bounds>, IFormattable
```

## Remarks

An axis-aligned bounding box, or AABB for short, is a box aligned with coordinate axes and fully enclosing some object. Because the box is never rotated with respect to the axes, it can be defined by just its [Bounds.center](/engine/6000.7/script-reference/unityengine/bounds/center.md) and [Bounds.extents](/engine/6000.7/script-reference/unityengine/bounds/extents.md), or alternatively by [Bounds.min](/engine/6000.7/script-reference/unityengine/bounds/min.md) and [Bounds.max](/engine/6000.7/script-reference/unityengine/bounds/max.md) points.

Bounds is used by [Collider.bounds](/engine/6000.7/script-reference/unityengine/collider/bounds.md), [Mesh.bounds](/engine/6000.7/script-reference/unityengine/mesh/bounds.md) and [Renderer.bounds](/engine/6000.7/script-reference/unityengine/renderer/bounds.md).

## Examples

```csharp
using UnityEngine;

public class BoundsVisualizer : MonoBehaviour
{
    public Bounds bounds;

    void Start()
    {
        // Example bounds setup if not assigned
        if (bounds.size == Vector3.zero)
            bounds = new Bounds(transform.position, Vector3.one);
    }

    void Update()
    {
        DrawBounds(bounds, Color.red);
    }

    void DrawBounds(Bounds b, Color color)
    {
        Vector3 min = b.min;
        Vector3 max = b.max;

        Vector3[] corners = new Vector3[8];
        // Bottom
        corners[0] = new Vector3(min.x, min.y, min.z);
        corners[1] = new Vector3(max.x, min.y, min.z);
        corners[2] = new Vector3(max.x, min.y, max.z);
        corners[3] = new Vector3(min.x, min.y, max.z);
        // Top
        corners[4] = new Vector3(min.x, max.y, min.z);
        corners[5] = new Vector3(max.x, max.y, min.z);
        corners[6] = new Vector3(max.x, max.y, max.z);
        corners[7] = new Vector3(min.x, max.y, max.z);

        // Bottom rectangle
        Debug.DrawLine(corners[0], corners[1], color);
        Debug.DrawLine(corners[1], corners[2], color);
        Debug.DrawLine(corners[2], corners[3], color);
        Debug.DrawLine(corners[3], corners[0], color);

        // Top rectangle
        Debug.DrawLine(corners[4], corners[5], color);
        Debug.DrawLine(corners[5], corners[6], color);
        Debug.DrawLine(corners[6], corners[7], color);
        Debug.DrawLine(corners[7], corners[4], color);

        // Vertical edges
        Debug.DrawLine(corners[0], corners[4], color);
        Debug.DrawLine(corners[1], corners[5], color);
        Debug.DrawLine(corners[2], corners[6], color);
        Debug.DrawLine(corners[3], corners[7], color);
    }
}
```

## Constructors

| Constructor                                                                                                                               | Description           |
| ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| [Bounds(UnityEngine.Vector3,UnityEngine.Vector3)](/engine/6000.7/script-reference/unityengine/bounds/ctor.md#bounds\(vector3-vector3\))   | Creates a new Bounds. |
| [Bounds(UnityEngine.Vector3@,UnityEngine.Vector3@)](/engine/6000.7/script-reference/unityengine/bounds/ctor.md#bounds\(vector3-vector3\)) | Creates a new Bounds. |

## Properties

| Property                                                                 | Description                                                                                                                                          |
| ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [center](/engine/6000.7/script-reference/unityengine/bounds/center.md)   | The center of the bounding box.                                                                                                                      |
| [extents](/engine/6000.7/script-reference/unityengine/bounds/extents.md) | The extents of the Bounding Box. This is always half of the [Bounds.size](/engine/6000.7/script-reference/unityengine/bounds/size.md) of the Bounds. |
| [max](/engine/6000.7/script-reference/unityengine/bounds/max.md)         | The maximal point of the box. This is always equal to *center+extents*.                                                                              |
| [min](/engine/6000.7/script-reference/unityengine/bounds/min.md)         | The minimal point of the box. This is always equal to *center-extents*.                                                                              |
| [size](/engine/6000.7/script-reference/unityengine/bounds/size.md)       | The total size of the box. This is always twice as large as the [Bounds.extents](/engine/6000.7/script-reference/unityengine/bounds/extents.md).     |

## Methods

| Method                                                                             | Description                                                            |
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [ClosestPoint](/engine/6000.7/script-reference/unityengine/bounds/closestpoint.md) | The closest point on the bounding box.                                 |
| [Contains](/engine/6000.7/script-reference/unityengine/bounds/contains.md)         | Is `point` contained in the bounding box?                              |
| [Encapsulate](/engine/6000.7/script-reference/unityengine/bounds/encapsulate.md)   | Grow the bounds to encapsulate the bounds.                             |
| [Expand](/engine/6000.7/script-reference/unityengine/bounds/expand.md)             | Expand the bounds by: `size` + (`amount` \* 2) along each side.        |
| [IntersectRay](/engine/6000.7/script-reference/unityengine/bounds/intersectray.md) | Does `ray` intersect this bounding box?                                |
| [Intersects](/engine/6000.7/script-reference/unityengine/bounds/intersects.md)     | Does another bounding box intersect with this bounding box?            |
| [SetMinMax](/engine/6000.7/script-reference/unityengine/bounds/setminmax.md)       | Sets the bounds to the `min` and `max` value of the box.               |
| [SqrDistance](/engine/6000.7/script-reference/unityengine/bounds/sqrdistance.md)   | The smallest squared distance between the point and this bounding box. |
| [ToString](/engine/6000.7/script-reference/unityengine/bounds/tostring.md)         | Returns a formatted string for the bounds.                             |
