navMeshAgent | Unity

Есть поле navMesh. Как мне выбрать случайную точку в этой зоне?

введите сюда описание изображения


Ответы (1 шт):

Автор решения: luvjungle

Ваша задача решена прямо в документации Unity

https://docs.unity3d.com/ScriptReference/AI.NavMesh.SamplePosition.html

Меня конечно смущают тут некоторые вещи, например использование дистанции 1.0f в методе NavMesh.SamplePosition, мне кажется там логичнее range / 2f

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;
}
→ Ссылка