# MoveLocation(NavMeshLocation, Vector3, int)

> Translates a NavMesh location to another position without losing contact with the surface.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Experimental.AI](/engine/6000.5/script-reference/unityengine/experimental/ai.md)
* **Assembly:** UnityEngine.AIModule

> **Warning:**
>
> **Deprecated.** The experimental NavMeshQuery struct has been deprecated. Use NavWorld instead.

```csharp
public NavMeshLocation MoveLocation(NavMeshLocation location, Vector3 target, int areaMask = -1)
```

### Parameters

**** (\[NavMeshLocation]\(/engine/6000.5/script-reference/unityengine/experimental/ai/navmeshlocation)): Position to be moved across the NavMesh surface.**** (\[Vector3]\(/engine/6000.5/script-reference/unityengine/vector3)): World position you require the agent to move to.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Bitmask with values of 1 set at the indices corresponding to areas that can be traversed, and with values of 0 for areas that should not be traversed. This parameter can be omitted, in which case it defaults to [NavMesh.AllAreas](/engine/6000.5/script-reference/unityengine/ai/navmesh/allareas.md).

### Returns

| Type                                                                                              | Description                                                                                     |
| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [NavMeshLocation](/engine/6000.5/script-reference/unityengine/experimental/ai/navmeshlocation.md) | A new location on the NavMesh placed as closely as possible to the specified `target` position. |

### Remarks

Returns the location on the NavMesh that is closest to the `target` position and that also has a continuous connection on the NavMesh surface through the allowed area types all the way to the start position specified by the `location` parameter. If the `target` position is outside the edges of the surface or of its allowed areas, a position at the edge is returned.

The movement does not cross [NavMeshLinks](https://docs.unity3d.com/Packages/com.unity.ai.navigation@2.0/api/Unity.AI.Navigation.NavMeshLink.html) or [OffMeshLinks](/engine/6000.5/script-reference/unityengine/ai/offmeshlink.md).

The result might not be accurate (the closest) if the `pathNodePoolSize` value in the NavMeshQuery initialization was not large enough to accommodate all the nodes that needed to be traversed in order to find a connection between `location.position` and `target`.

Additional Resources: [NavMeshQuery.MoveLocations](/engine/6000.5/script-reference/unityengine/experimental/ai/navmeshquery/movelocations.md), [NavMeshQuery.MoveLocationsInSameAreas](/engine/6000.5/script-reference/unityengine/experimental/ai/navmeshquery/movelocationsinsameareas.md), Areas and Costs
