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

> Like Physics.CapsuleCast, but this function will return all hits the capsule sweep intersects.

## Definition

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

```csharp
public static RaycastHit[] CapsuleCastAll(Vector3 point1, Vector3 point2, float radius, Vector3 direction, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction)
```

### Parameters

**** (\[Vector3]\(/engine/6000.7/script-reference/unityengine/vector3)): The center of the sphere at the `start` of the capsule.**** (\[Vector3]\(/engine/6000.7/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.7/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.7/manual/working-with-gameobjects/layers.md) that is used to selectively filter which colliders are considered when casting a capsule.**** (\[QueryTriggerInteraction]\(/engine/6000.7/script-reference/unityengine/querytriggerinteraction)): Specifies whether this query should hit Triggers.

### Returns

| Type                                                                        | Description                                 |
| --------------------------------------------------------------------------- | ------------------------------------------- |
| [RaycastHit\[\]](/engine/6000.7/script-reference/unityengine/raycasthit.md) | An array of all colliders hit in the sweep. |

### Remarks

Casts a capsule against all colliders in the Scene and returns detailed information on each collider which was hit. 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 all colliders 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:** For colliders that overlap the capsule at the start of the sweep,  [\_normal](/engine/6000.7/script-reference/unityengine/raycasthit/normal.md) is set opposite to the direction of the sweep, [\_distance](/engine/6000.7/script-reference/unityengine/raycasthit/distance.md) is set to zero, and the zero vector gets returned in [\_point](/engine/6000.7/script-reference/unityengine/raycasthit/point.md).  You might want to check whether this is the case in your particular query and perform additional queries to refine the result. Passing a zero radius results in undefined output and doesn't always behave the same as [Physics.Raycast](/engine/6000.7/script-reference/unityengine/physics/raycast.md).

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

### Examples

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

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        RaycastHit[] hits;
        CharacterController charCtrl = GetComponent<CharacterController>();
        Vector3 p1 = transform.position + charCtrl.center + Vector3.up * -charCtrl.height * 0.5F;
        Vector3 p2 = p1 + Vector3.up * charCtrl.height;

        // Cast character controller shape 10 meters forward, to see if it is about to hit anything
        hits = Physics.CapsuleCastAll(p1, p2, charCtrl.radius, transform.forward, 10);

        // Change the material of all hit colliders
        // to use a transparent Shader
        for (int i = 0; i < hits.Length; i++)
        {
            RaycastHit hit = hits[i];
            Renderer rend = hit.transform.GetComponent<Renderer>();

            if (rend)
            {
                rend.material.shader = Shader.Find("Transparent/Diffuse");
                Color tempColor = rend.material.color;
                tempColor.a = 0.3F;
                rend.material.color = tempColor;
            }
        }
    }
}
```
