# GetContacts

> Retrieves all contact points for all of the Collider(s) attached to this Rigidbody, with the results filtered by the ContactFilter2D.

## Definition

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

## GetContacts(ContactFilter2D, ContactPoint2D\[])

Retrieves all contact points for all of the Collider(s) attached to this Rigidbody, with the results filtered by the `ContactFilter2D`.

```csharp
public int GetContacts(ContactFilter2D contactFilter, ContactPoint2D[] contacts)
```

### Parameters

**** (\[ContactFilter2D]\(/engine/6000.6/script-reference/unityengine/contactfilter2d)): The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle.**** (\[ContactPoint2D\[]]\(/engine/6000.6/script-reference/unityengine/contactpoint2d)): An array of [ContactPoint2D](/engine/6000.6/script-reference/unityengine/contactpoint2d.md) used to receive the results.

### Returns

| Type                                                       | Description                                                    |
| ---------------------------------------------------------- | -------------------------------------------------------------- |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | Returns the number of contacts placed in the `contacts` array. |

### Remarks

Contacts involving a [Collider2D](/engine/6000.6/script-reference/unityengine/collider2d.md) set to be a trigger will never be returned here because trigger Colliders do not have contact points.  This is true even if the `contactFilter` has its [ContactFilter2D.useTriggers](/engine/6000.6/script-reference/unityengine/contactfilter2d/usetriggers.md) set to true.

When retrieving contacts, you should ensure that the provided array is large enough to contain all the contacts you are interested in.  Typically the array would be reused therefore it would be a size to return a reasonable quantity of contacts.  This function also means that no allocations occur which means no work is produced for the garbage collector.

Additional Resources: [Collider2D.GetContacts](/engine/6000.6/script-reference/unityengine/collider2d/getcontacts.md) and [Physics2D.GetContacts](/engine/6000.6/script-reference/unityengine/physics2d/getcontacts.md).

## GetContacts(ContactFilter2D, List\<ContactPoint2D>)

Retrieves all contact points for all of the Collider(s) attached to this Rigidbody.

```csharp
public int GetContacts(ContactFilter2D contactFilter, List<ContactPoint2D> contacts)
```

### Parameters

**** (\[ContactFilter2D]\(/engine/6000.6/script-reference/unityengine/contactfilter2d)): The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle.**** (\[List\<ContactPoint2D>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): A list of [ContactPoint2D](/engine/6000.6/script-reference/unityengine/contactpoint2d.md) used to receive the results.

### Returns

| Type                                                       | Description                                                   |
| ---------------------------------------------------------- | ------------------------------------------------------------- |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | Returns the number of contacts placed in the `contacts` list. |

### Remarks

Contacts involving a [Collider2D](/engine/6000.6/script-reference/unityengine/collider2d.md) set to be a trigger will never be returned here because trigger Colliders do not have contact points.

The integer return value is the number of results written into the `contacts` list. The contacts list will be resized if it doesn't contain enough elements to report all the results. This prevents memory from being allocated for results when the `contacts` list does not need to be resized, and improves garbage collection performance when the query is performed frequently.

The results can also be filtered by the `contactFilter`.

Additional Resources: [Collider2D.GetContacts](/engine/6000.6/script-reference/unityengine/collider2d/getcontacts.md) and [Physics2D.GetContacts](/engine/6000.6/script-reference/unityengine/physics2d/getcontacts.md).

## GetContacts(ContactFilter2D, Collider2D\[])

Retrieves all Colliders in contact with any of the Collider(s) attached to this rigidbody, with the results filtered by the `ContactFilter2D`.

```csharp
public int GetContacts(ContactFilter2D contactFilter, Collider2D[] colliders)
```

### Parameters

**** (\[ContactFilter2D]\(/engine/6000.6/script-reference/unityengine/contactfilter2d)): The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle.**** (\[Collider2D\[]]\(/engine/6000.6/script-reference/unityengine/collider2d)): An array of [Collider2D](/engine/6000.6/script-reference/unityengine/collider2d.md) used to receive the results.

### Returns

| Type                                                       | Description                                                      |
| ---------------------------------------------------------- | ---------------------------------------------------------------- |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | Returns the number of colliders placed in the `colliders` array. |

### Remarks

When retrieving contacts, you should ensure that the provided array is large enough to contain all the contacts you are interested in.  Typically the array would be reused therefore it would be a size to return a reasonable quantity of contacts.  This function also means that no allocations occur which means no work is produced for the garbage collector.

Additional Resources: [Collider2D.GetContacts](/engine/6000.6/script-reference/unityengine/collider2d/getcontacts.md) and [Physics2D.GetContacts](/engine/6000.6/script-reference/unityengine/physics2d/getcontacts.md).

## GetContacts(ContactFilter2D, List\<Collider2D>)

Retrieves all Colliders in contact with any of the Collider(s) attached to this Rigidbody.

```csharp
public int GetContacts(ContactFilter2D contactFilter, List<Collider2D> colliders)
```

### Parameters

**** (\[ContactFilter2D]\(/engine/6000.6/script-reference/unityengine/contactfilter2d)): The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle.**** (\[List\<Collider2D>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): A list of [Collider2D](/engine/6000.6/script-reference/unityengine/collider2d.md) used to receive the results.

### Returns

| Type                                                       | Description                                                     |
| ---------------------------------------------------------- | --------------------------------------------------------------- |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | Returns the number of Colliders placed in the `colliders` list. |

### Remarks

The integer return value is the number of results written into the `colliders` list. The contacts list will be resized if it doesn't contain enough elements to report all the results. This prevents memory from being allocated for results when the `colliders` list does not need to be resized, and improves garbage collection performance when the query is performed frequently.

The results can also be filtered by the `contactFilter`.

Additional Resources: [Collider2D.GetContacts](/engine/6000.6/script-reference/unityengine/collider2d/getcontacts.md) and [Physics2D.GetContacts](/engine/6000.6/script-reference/unityengine/physics2d/getcontacts.md).

## GetContacts(ContactFilter2D, Allocator)

Retrieves all contact points for all of the Collider(s) attached to this Rigidbody.

```csharp
public NativeArray<ContactPoint2D> GetContacts(ContactFilter2D contactFilter, Allocator allocator = Allocator.Temp)
```

### Parameters

**** (\[ContactFilter2D]\(/engine/6000.6/script-reference/unityengine/contactfilter2d)): The contact filter used to filter the results differently, such as by layer mask, Z depth, or normal angle.**** (\[Allocator]\(/engine/6000.6/script-reference/unity/collections/allocator)): The memory allocator to use for the results. This can only be Allocator.Temp, Allocator.TempJob or Allocator.Persistent.

### Returns

| Type                                                                                              | Description                                                                                                                         |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| [NativeArray\<ContactPoint2D>](/engine/6000.6/script-reference/unity/collections/nativearray1.md) | A collection of ContactPoint2D containing the results. The collection does not allocate any managed memory but must be disposed of. |
