Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

NavMesh.SamplePosition

Объявление

public static bool SamplePosition(Vector3 sourcePosition, out AI.NavMeshHit hit, float maxDistance, int areaMask);

Параметры

sourcePosition Происхождение примера запроса.
hit Содержит свойства полученного местоположения. Значение hit.normal никогда не вычисляется. Всегда (0,0,0).
maxDistance Образец в пределах этого расстояния от sourcePosition.
areaMask Маска, определяющая разрешенные области NavMesh при поиске ближайшей точки.

Возвращает

bool true, если ближайшая точка найдена.

Описание

Находит ближайшую точку на основе NavMesh в указанном диапазоне.

Ближайшая точка находится путем проецирования входной точки на соседние экземпляры NavMesh вдоль вертикальной оси. Эта вертикальная ось выбирается для каждого экземпляра во время создания. Если на этом шаге не удается найти спроецированную точку на указанном расстоянии, выборка распространяется на окружающие позиции NavMesh.

Находит ближайшую точку на основе расстояния до точки запроса. Эта функция не учитывает препятствия. Например, в двухэтажном здании, если для параметра sourcePosition задана точка на потолке первого этажа, ближайшая точка может быть найдена на втором, а не на первом этаже. Потолок не считается препятствием.

Эта функция может снизить частоту кадров, если указан большой радиус поиска. Чтобы избежать проблем с частотой кадров, рекомендуется указать maxDistance, равный удвоенной высоте агента.

Если вы пытаетесь найти случайную точку в NavMesh, вам следует использовать рекомендуемый радиус и выполнять поиск несколько раз вместо использования очень большого радиуса.

// 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); } } }

Объявление

public static bool SamplePosition(Vector3 sourcePosition, out AI.NavMeshHit hit, float maxDistance, AI.NavMeshQueryFilter filter);

Параметры

sourcePosition Происхождение примера запроса.
hit Содержит свойства полученного местоположения. Значение hit.normal никогда не вычисляется. Всегда (0,0,0).
maxDistance Образец на этом расстоянии от sourcePosition.
filter Фильтр, указывающий, какие области NavMesh разрешены при поиске ближайшей точки..

Возвращает

bool true, если ближайшая точка найдена.

Описание

Выборка позиции, ближайшей к sourcePosition, в любой NavMesh, созданной для типа агента, указанного фильтром.

Учитывать только позиции в областях, определенных в NavMeshQueryFilter.areaMask. Максимальный радиус поиска задается параметром maxDistance. Информация о любой найденной позиции возвращается в аргументе попадания.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3