# CapsuleCast(Vector3, Vector3, float, Vector3, float, int, QueryTriggerInteraction)

> Casts a capsule against all colliders in the Scene and returns detailed information on what was hit.

## Definition

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

```csharp
public static bool CapsuleCast(Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
```

### Parameters

**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The center of the sphere at the `start` of the capsule.**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The center of the sphere at the `end` of the capsule.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The radius of the capsule.**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): The direction into which to sweep the capsule.**** (\[float]\(https\://learn.microsoft.com/dotnet/api/system.single)): The max length of the sweep.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): A [Layer mask](/engine/6000.5/manual/working-with-gameobjects/layers.md) that is used to selectively filter which colliders are considered when casting a capsule.**** (\[QueryTriggerInteraction]\(/engine/6000.5/script-reference/unityengine/querytriggerinteraction)): Specifies whether this query should hit Triggers.

### Returns

| Type                                                          | Description                                                         |
| ------------------------------------------------------------- | ------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the capsule sweep intersects any collider, otherwise false. |

### Remarks

The capsule is defined by the two spheres with `radius` around `point1` and `point2`, which form the two ends of the capsule. Hits are returned for the first collider which would collide against this capsule if the capsule was moved along `direction`. This is useful when a Raycast does not give enough precision, because you want to find out if an object of a specific size, such as a character, will be able to move somewhere without colliding with anything on the way.

**Notes:** CapsuleCast will not detect colliders for which the capsule overlaps the collider. Passing a zero radius results in undefined output and doesn't always behave the same as [Physics.Raycast](/engine/6000.5/script-reference/unityengine/physics/raycast.md).

Additional Resources: [Physics.SphereCast](/engine/6000.5/script-reference/unityengine/physics/spherecast.md), [Physics.CapsuleCastAll](/engine/6000.5/script-reference/unityengine/physics/capsulecastall.md), [Physics.Raycast](/engine/6000.5/script-reference/unityengine/physics/raycast.md), [Rigidbody.SweepTest](/engine/6000.5/script-reference/unityengine/rigidbody/sweeptest.md).

### Examples

```csharp
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        RaycastHit hit;
        CharacterController charContr = GetComponent<CharacterController>();
        Vector3 p1 = transform.position + charContr.center + Vector3.up * -charContr.height * 0.5F;
        Vector3 p2 = p1 + Vector3.up * charContr.height;
        float distanceToObstacle = 0;

        // Cast character controller shape 10 meters forward to see if it is about to hit anything.
        if (Physics.CapsuleCast(p1, p2, charContr.radius, transform.forward, out hit, 10))
            distanceToObstacle = hit.distance;
    }
}
```
