Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
ClosesourcePosition | The origin of the sample query. |
hit | Holds the properties of the resulting location. The value of hit.normal is never computed. It is always (0,0,0). |
maxDistance | Sample within this distance from sourcePosition. |
areaMask | A mask that specifies the NavMesh areas allowed when finding the nearest point. |
bool True if the nearest point is found.
Finds the nearest point based on the NavMesh within a specified range.
The nearest point is found by projecting the input point onto nearby NavMesh instances along the vertical axis. This vertical axis has been chosen for each instance at the time of creation. If this step does not find a projected point within the specified distance, then sampling is extended to surrounding NavMesh positions.
Finds the nearest point based on the distance to the query point. This function does not consider obstructions. For example, in a two story structure, if the sourcePosition is set to a point on the ceiling on the first floor, the nearest point might be found on the second floor rather than the first floor. The ceiling is not considered as an obstruction.
This function may reduce the frame rate if a large search radius is specified. To avoid frame rate issues, it is recommended that you specify a maxDistance of twice the agent height.
If you are trying to find a random point on the NavMesh, you should use the recommended radius and perform the find multiple times instead of using a very large radius.
// RandomPointOnNavMesh using UnityEngine; using UnityEngine.AI;
public class RandomPointOnNavMesh : MonoBehaviour { public float range = 10.0f;
bool RandomPoint(Vector3 center, float range, out Vector3 result) { for (int i = 0; i < 30; i++) { Vector3 randomPoint = center + Random.insideUnitSphere * range; NavMeshHit hit; if (NavMesh.SamplePosition(randomPoint, out hit, 1.0f, NavMesh.AllAreas)) { result = hit.position; return true; } } result = Vector3.zero; return false; }
void Update() { Vector3 point; if (RandomPoint(transform.position, range, out point)) { Debug.DrawRay(point, Vector3.up, Color.blue, 1.0f); } } }
sourcePosition | The origin of the sample query. |
hit | Holds the properties of the resulting location. The value of hit.normal is never computed. It is always (0,0,0). |
maxDistance | Sample within this distance from sourcePosition. |
filter | A filter specifying which NavMesh areas are allowed when finding the nearest point. |
bool True if the nearest point is found.
Samples the position nearest the sourcePosition on any NavMesh built for the agent type specified by the filter.
Consider only positions on areas defined in the NavMeshQueryFilter.areaMask. A maximum search radius is set by maxDistance. The information of any found position is returned in the hit argument.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.