NavigationServer3D
Експериментальний: This class may be changed or removed in future versions.
Успадковує: Object
Інтерфейс сервера для низького рівня 3D навігації доступу.
Опис
НавігаціяServer3D - сервер, який керує навігацією, регіонами та агентами. Навігація A* від AStar3D.
Карти діляться на регіони, які складаються з навігаторів. Разом вони визначають навігаційні площі у світі 3D.
Примітка: Більшість NavigationServer3D зміни приймають ефект після наступного фізичного кадру і не відразу. Це включає в себе всі зміни, внесені до карт, регіонів або агентів навігаційних вершин у дерево або зроблено через скрипти.
Для двох регіонів, щоб бути підключеними один до одного, вони повинні поділитися схожим краєм. Край вважається підключений до іншого, якщо обидва його два вершини знаходяться на відстані менше edge_connection_margin до відповідної іншої вершини.
Ви можете призначити навігаційні шари до регіонів з region_set_navigation_layers(), які потім можна перевірити при запитуванні шляху з map_get_path(). Це може бути використаний для того, щоб дозволити або заперечувати певні ділянки для деяких об'єктів.
Щоб використовувати систему зіткнень, можна використовувати агенти. Ви можете встановити цільову швидкість агента, після чого сервери випромінять зворотний дзвінок з модифікованою швидкістю.
Примітка: Система запобігання зіткнення ігнорує регіони. Використання модифікованої швидкості безпосередньо може переміщати агента за межі траверсійної зони. Це обмеження системи зіткнень, будь-яка більш складна ситуація може вимагати використання фізичного двигуна.
Цей сервер зберігає треки будь-якого виклику і виконує їх під час синхронізації. Це означає, що ви можете запросити будь-яку зміну на карту, використовуючи будь-яку нитку, не хвилюючись.
Посібники
Методи
Сигнали
avoidance_debug_changed() 🔗
Увімкнено, коли зміниться налаштування відключення. Тільки доступні в будівельних конструкціях.
При оновленні навігаційної карти, коли регіон рухається або змінено.
navigation_debug_changed() 🔗
Увімкнено при навігаційних налаштуваннях. Тільки доступні в будівельних конструкціях.
Переліки
enum ProcessInfo: 🔗
ProcessInfo INFO_ACTIVE_MAPS = 0
Постійне отримання кількості активних навігаторів.
ProcessInfo INFO_REGION_COUNT = 1
Постійне отримання кількості активних навігаторів.
ProcessInfo INFO_AGENT_COUNT = 2
Постійне отримання кількості активних навігаційних агентів.
ProcessInfo INFO_LINK_COUNT = 3
Постійне отримання кількості активних навігаторів.
ProcessInfo INFO_POLYGON_COUNT = 4
Постійне отримання кількості навігаторів сітки.
ProcessInfo INFO_EDGE_COUNT = 5
Постійне отримання кількості навігаторів країв полігонів.
ProcessInfo INFO_EDGE_MERGE_COUNT = 6
Постійно отримати кількість навігаційних сітчастих полігонних країв, які були об'єднані через крайовий ключ перекриття.
ProcessInfo INFO_EDGE_CONNECTION_COUNT = 7
Постійно отримайте кількість навігаційних сітчастих полігонних країв, які вважаються підключеними за межі.
ProcessInfo INFO_EDGE_FREE_COUNT = 8
Постійно отримати кількість навігаційних сітчастих полігонних країв, які не можуть бути об'єднані, але можуть бути як і раніше пов'язані з кутовою близькістю або з посиланнями.
ProcessInfo INFO_OBSTACLE_COUNT = 9
Константа для отримання кількості активних навігаційних перешкод.
Описи методів
Створює агент.
bool agent_get_avoidance_enabled(agent: RID) const 🔗
Повертаємо true, якщо надана agent увімкнено.
int agent_get_avoidance_layers(agent: RID) const 🔗
Повертає бітову маску avoidance_layers вказаного agent.
int agent_get_avoidance_mask(agent: RID) const 🔗
Повертає бітову маску avoidance_mask вказаного agent.
float agent_get_avoidance_priority(agent: RID) const 🔗
Повертаємо avoidance_priority вказаного agent.
float agent_get_height(agent: RID) const 🔗
Повертаємо height вказаного agent.
RID agent_get_map(agent: RID) const 🔗
Повернення карти навігації RID запитаний agent в даний час присвоєно.
int agent_get_max_neighbors(agent: RID) const 🔗
Повертає максимальну кількість інших агентів, зазначених agent, враховується в навігацію.
float agent_get_max_speed(agent: RID) const 🔗
Повертає максимальну швидкість вказаного agent.
float agent_get_neighbor_distance(agent: RID) const 🔗
Повертає максимальну відстань до інших агентів, зазначених agent, враховується в навігацію.
bool agent_get_paused(agent: RID) const 🔗
Повертаємо true, якщо зазначений agent паулюється.
Vector3 agent_get_position(agent: RID) const 🔗
Повертає позицію зазначеного agent у світовому просторі.
float agent_get_radius(agent: RID) const 🔗
Повертає радіус вказаного agent.
float agent_get_time_horizon_agents(agent: RID) const 🔗
Повертаємо мінімальну кількість часу, за яким зазначений agent нерівності, які комп’ютерні моделювання безпечні відносно інших агентів.
float agent_get_time_horizon_obstacles(agent: RID) const 🔗
Повернути мінімальну кількість часу, за яким зазначений agent, які комп’ютерні елементи є безпечними для статичних перешкод.
bool agent_get_use_3d_avoidance(agent: RID) const 🔗
Повертає true, якщо надана agent використовує уникнення 3D простору Vector3 (x,y,z) замість горизонтального 2D Vector2(x,y) / Vector3(x,0.0,z).
Vector3 agent_get_velocity(agent: RID) const 🔗
Повертає швидкість вказаного agent.
bool agent_has_avoidance_callback(agent: RID) const 🔗
Повернутися true, якщо зазначений agent має зворотний дзвінок.
bool agent_is_map_changed(agent: RID) const 🔗
Повертає true, якщо карта була змінена в попередньому кадрі.
void agent_set_avoidance_callback(agent: RID, callback: Callable) 🔗
Налаштовує зворотний зв'язок Callable, який називається після кожного етапу обробки уникнення agent. Розраховані safe_velocity будуть відправлені сигналом на об'єкт безпосередньо перед фізичним обчисленням.
Note: Створені зворотні зв’язки завжди обробляються незалежно від стану SceneTree, доки агент навігаційні карти і не звільняється. Щоб вимкнути відправлення зворотного зв'язку з використанням агента agent_set_avoidance_callback() порожнім Callable.
void agent_set_avoidance_enabled(agent: RID, enabled: bool) 🔗
Якщо enabled true, наданий agent обчислює уникнення.
void agent_set_avoidance_layers(agent: RID, layers: int) 🔗
Встановити агента avoidance_layers bitmask.
void agent_set_avoidance_mask(agent: RID, mask: int) 🔗
Набір агента avoidance_mask bitmask.
void agent_set_avoidance_priority(agent: RID, priority: float) 🔗
Встановити агента avoidance_priority з priority між 0.0 (нижчий пріоритет) до 1.0 (найвищий пріоритет).
Вказаний agent не регулює швидкість для інших агентів, які будуть відповідати avoidance_mask, але мають нижній avoidance_priority. Це в свою чергу робить інші агенти з більш низьким пріоритетом коригувати свої нерівності ще більше, щоб уникнути зіткнення з цим агентом.
void agent_set_height(agent: RID, height: float) 🔗
Оновлення наданої agent height.
void agent_set_map(agent: RID, map: RID) 🔗
Поставить агент на карті.
void agent_set_max_neighbors(agent: RID, count: int) 🔗
Встановлює максимальну кількість інших агентів, що враховуються в навігацію. Чим більший цей номер, тим довше робочий час моделювання. Якщо номер занадто низький, моделювання не буде безпечним.
void agent_set_max_speed(agent: RID, max_speed: float) 🔗
Встановлює максимальну швидкість агента. Потрібні бути позитивними.
void agent_set_neighbor_distance(agent: RID, distance: float) 🔗
Встановлює максимальну відстань до інших агентів, які враховуються в навігацію. Чим більший цей номер, тим довше робочий час моделювання. Якщо номер занадто низький, моделювання не буде безпечним.
void agent_set_paused(agent: RID, paused: bool) 🔗
Якщо paused має значення true, то вказаний agent не буде оброблено. Наприклад, він не розраховуватиме швидкості уникнення або не отримуватиме зворотні виклики уникнення.
void agent_set_position(agent: RID, position: Vector3) 🔗
Встановлює позицію агента у світовому просторі.
void agent_set_radius(agent: RID, radius: float) 🔗
Встановлює радіус агента.
void agent_set_time_horizon_agents(agent: RID, time_horizon: float) 🔗
Мінімальна кількість часу, на які з’являються відчуття агента, які відповідають симуляторам, безпечні для інших агентів. Чим більший цей номер, тим швидше цей агент буде реагувати на наявність інших агентів, але тим менша свобода цей агент має у виборі його оксамитовості. Дуже висока вартість значно сповільнить рух агентів. Потрібні бути позитивними.
void agent_set_time_horizon_obstacles(agent: RID, time_horizon: float) 🔗
Мінімальна кількість часу, на які з’являються відчуття агента, які комп’ютеризуються імітацією, є безпечною для статичних перешкод. Чим більший цей номер, тим швидше цей агент буде реагувати на наявність статичних перешкод ухилення, але менша свобода цей агент має у виборі своїх віялок. Дуже висока вартість значно сповільнить рух агентів. Потрібні бути позитивними.
void agent_set_use_3d_avoidance(agent: RID, enabled: bool) 🔗
Встановлює, якщо агент використовує увімкнення 2D або увімкнення 3D при включенні уникнення.
Якщо true агент розраховує неухильність в 3D для осі Xyz, наприклад, для ігор, які відбуваються в повітрі, підводному або просторі. 3D з використанням агента дозволяє уникнути інших 3D у використанні агента. 3D за допомогою агента тільки реагує на перешкоди, що знаходяться на основі перешкод. 3D за допомогою агента ігнорує будь-які вершини на основі перешкод. 3D за допомогою агента дозволяє уникнути інших 3D за допомогою агента.
Якщо false агент розраховує неухильність в 2D вздовж осі Xz, ігноруючи вісь. 2D з використанням агента дозволяє уникнути інших 2D у використанні агента. 2D за допомогою агента відреагує на перешкоди радіусу. 2D за допомогою агента відреагує на основі перешкод ухилення. 2D за допомогою агента дозволяє уникнути інших 2D за допомогою агента. 2D за допомогою агентів ігнорувати інші 2D за допомогою агентів або перешкод, які нижче їх поточного положення або вище їх поточного положення, включаючи висоту агентів в 2D уникнення.
void agent_set_velocity(agent: RID, velocity: Vector3) 🔗
Набори velocity як нова захожена швидкість за вказаною agent. Симулятор уникнення зіткнень з іншими перешкодами агента. Коли агент зв'язується з новим використанням позиції agent_set_velocity_forced(), а також для скидання внутрішньої швидкості моделювання.
void agent_set_velocity_forced(agent: RID, velocity: Vector3) 🔗
Замінює внутрішню швидкість при зіткненні симулятора з velocity для вказаного agent. При підключенні агента до нової позиції ця функція повинна бути використана в одному кадрі. Якщо часто ця функція може отримати агенти, які застрягають.
void bake_from_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, callback: Callable = Callable()) 🔗
Bakes the available navigation_mesh з даними з наданої source_geometry_data. Після завершення процесу буде викликано додаткове callback.
void bake_from_source_geometry_data_async(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, callback: Callable = Callable()) 🔗
Випікає надані navigation_mesh з даними з наданої source_geometry_data як завдання асинхрону, що працює на фоновій нитки. Після завершення процесу буде викликано додаткове callback.
Знижує дану RID.
bool get_debug_enabled() const 🔗
Повертає true при включенні навігаційної служби.
Повернення всіх створених навігаційних карт RID на навігації Це повертає як 2D, так і 3D створених навігаційних карт, так і не відрізняється від них.
int get_process_info(process_info: ProcessInfo) const 🔗
Повертає інформацію про поточний стан NavigationServer.
bool is_baking_navigation_mesh(navigation_mesh: NavigationMesh) const 🔗
Повертаємо true, коли надана навігаційна сітка запікається на фоновій нитки.
Створення нового посилання між двома позиціями на мапі.
bool link_get_enabled(link: RID) const 🔗
Повертає true, якщо вказаний link увімкнено.
Vector3 link_get_end_position(link: RID) const 🔗
Повертає позицію закінчення цього link.
float link_get_enter_cost(link: RID) const 🔗
Повертаємо вартість вказаного link.
int link_get_iteration_id(link: RID) const 🔗
Повертає поточний ідентифікатор ітерації навігаційного посилання. Щоразу, коли навігаційне посилання змінюється та синхронізується, ідентифікатор ітерації збільшується. Ідентифікатор ітерації 0 означає, що навігаційне посилання ніколи не синхронізувалося.
Примітка: Ідентифікатор ітерації перенесеться на 1 після досягнення граничного діапазону.
RID link_get_map(link: RID) const 🔗
Повернення карти навігації RID запитаний link в даний час приписується.
int link_get_navigation_layers(link: RID) const 🔗
Повертає навігаційні шари для цього link.
int link_get_owner_id(link: RID) const 🔗
Повернення ObjectID об'єкту, який керує цим посиланням.
Vector3 link_get_start_position(link: RID) const 🔗
Повертає стартову позицію цього link.
float link_get_travel_cost(link: RID) const 🔗
Повертаємо вартість поїздки цього link.
bool link_is_bidirectional(link: RID) const 🔗
Повертаємо вашу увагу на те, що ця link може бути передана в обидві сторони.
void link_set_bidirectional(link: RID, bidirectional: bool) 🔗
Налаштуйте, чи можна це link, щоб подорожувати в обох напрямках.
void link_set_enabled(link: RID, enabled: bool) 🔗
Якщо для параметра enabled встановлено значення true, то вказаний параметр link внесе свій вклад у поточну карту навігації.
void link_set_end_position(link: RID, position: Vector3) 🔗
Встановлює позицію виходу для link.
void link_set_enter_cost(link: RID, enter_cost: float) 🔗
Налаштовує enter_cost для цього link.
void link_set_map(link: RID, map: RID) 🔗
Набір навігаційної карти RID для посилання.
void link_set_navigation_layers(link: RID, navigation_layers: int) 🔗
Навігаційні шари посилань. Це дозволяє вибрати посилання з запиту на шлях (при використанні map_get_path()).
void link_set_owner_id(link: RID, owner_id: int) 🔗
Встановіть ObjectID об'єкту, який керує цим посиланням.
void link_set_start_position(link: RID, position: Vector3) 🔗
Налаштовує позицію входу для цього link.
void link_set_travel_cost(link: RID, travel_cost: float) 🔗
Набори travel_cost для цього link.
Створення нової карти.
void map_force_update(map: RID) 🔗
Застаріло: This method is no longer supported, as it is incompatible with asynchronous updates. It can only be used in a single-threaded context, at your own risk.
Ця функція відразу змушує синхронізацію зазначеної навігації map RID. Навігаційні карти за замовчуванням синхронізуються в кінці кожного фізичного кадру. Ця функція може бути використана для відразу (re) Це дає можливість переробити навігаційний шлях для зміни карти відразу і в тому ж кадрі (багато разів, якщо необхідно).
У зв'язку з технічними обмеженнями черги команди навігатора буде розпущена. Це означає, що всі вже черги оновлені команди для цієї фізики будуть виконані, навіть ті, призначені для інших карт, регіонів і агентів, які не входять до зазначеної карти. Дороге обчислення навігаційних сіточок і облицювальних з'єднань карти буде здійснюватися тільки для вказаної карти. Інші карти отримають нормальну синхронізацію в кінці фізики кадру. Якщо зазначена карта отримує зміни після вимушеного оновлення, вона буде знову оновлюватися, а також коли інші карти отримують їх оновлення.
Уникнення обробки та відправлення сигналів safe_velocity необґрунтованою цією функцією і продовжує стати для всіх карт і агентів в кінці фізики кадру.
Note: З великою потужністю виходить велика відповідальність. Ця функція повинна бути використана тільки користувачами, які дійсно знають, що вони роблять і мають хорошу причину для неї. Навігація безпосереднього оновлення навігаційної карти вимагає блокування навігаційного сервера і промивання всієї команди навігації Не тільки може це важко впливати на продуктивність гри, але це також може ввести помилки, якщо використовуються недорогі без особливих зусиль.
Array[RID] map_get_agents(map: RID) const 🔗
Повернення всіх навігаційних агентів RID, які в даний час призначають на задану навігацію map.
float map_get_cell_height(map: RID) const 🔗
Повертає висоту карткової комірки, що використовується для растрової навігаційної сітки вершини на осі Y.
float map_get_cell_size(map: RID) const 🔗
Повертає розмір карткової комірки, що використовується для стерилізації навігаційних вершин на площині XZ.
Vector3 map_get_closest_point(map: RID, to_point: Vector3) const 🔗
Повертає точку поверхні навігаційної сітки, найближчу до наданого to_point на навігаційній map.
Vector3 map_get_closest_point_normal(map: RID, to_point: Vector3) const 🔗
Повертає нормаль поверхні навігаційної сітки, найближчу до наданого to_point на навігаційній map.
RID map_get_closest_point_owner(map: RID, to_point: Vector3) const 🔗
Повертає RID регіону власника для точки поверхні навігаційної сітки, найближчої до наданого to_point на навігаційній map.
Vector3 map_get_closest_point_to_segment(map: RID, start: Vector3, end: Vector3, use_collision: bool = false) const 🔗
Повертає точку поверхні навігаційної сітки, найближчу до наданого сегмента start і end на навігаційній map.
Якщо параметр use_collision має значення true, перевірка найближчої точки виконується лише тоді, коли сегмент перетинається з поверхнею навігаційної сітки.
float map_get_edge_connection_margin(map: RID) const 🔗
Повернення краю з'єднання поля карти. Ця відстань - мінімальна відстань вершини, необхідно для підключення двох країв з різних регіонів.
int map_get_iteration_id(map: RID) const 🔗
Повернення поточної ітерації навігаційної карти. Кожного разу навігаційна карта змінюється і синхронізує ітераторію. Ітерація id 0 означає навігаційну карту ніколи не синхронізовано.
Примітка: Ітерація id буде обертатися до 1 після досягнення його ліміту діапазону.
float map_get_link_connection_radius(map: RID) const 🔗
Повертає радіус зв'язку карти. Ця відстань є максимальним діапазоном будь-якого посилання буде пошук навігаторів сітки для підключення до.
Array[RID] map_get_links(map: RID) const 🔗
Повертає всі навігаційні посилання RID, які в даний час призначають на задану навігацію map.
float map_get_merge_rasterizer_cell_scale(map: RID) const 🔗
Повертає внутрішню об'єднання растрових комірок.
Array[RID] map_get_obstacles(map: RID) const 🔗
Повертає всі навігаційні перешкоди RID, які в даний час призначаються на вимогливій навігації map.
PackedVector3Array map_get_path(map: RID, origin: Vector3, destination: Vector3, optimize: bool, navigation_layers: int = 1) 🔗
Повертає шлях навігації для досягнення пункту призначення від початку. navigation_layers – це бітова маска всіх шарів навігації регіону, які дозволені в шляху.
Vector3 map_get_random_point(map: RID, navigation_layers: int, uniformly: bool) const 🔗
Повертає випадкову позицію, вибрану з усіх полігонів області карти з відповідним navigation_layers.
Якщо uniformly має значення true, усі області карти, полігони та грані зважуються за площею їхньої поверхні (повільніше).
Якщо uniformly має значення false, вибирається лише випадкова область та випадковий полігон (швидше).
Array[RID] map_get_regions(map: RID) const 🔗
Повертає всі навігаційні регіони RID, які в даний час приписуються на задану навігацію map.
Vector3 map_get_up(map: RID) const 🔗
Повертає напрямок карти.
bool map_get_use_async_iterations(map: RID) const 🔗
Повертає true, якщо синхронізація map використовує асинхронний процес, який виконується у фоновому потоці.
bool map_get_use_edge_connections(map: RID) const 🔗
Повертає true, якщо навігаційний map дозволяє навігаційним регіонам використовувати крайові з’єднання для з’єднання з іншими навігаційними регіонами в межах поля з’єднання краю навігаційної карти.
bool map_is_active(map: RID) const 🔗
Повертає true, якщо карта активна.
void map_set_active(map: RID, active: bool) 🔗
Налаштовує активацію карти.
void map_set_cell_height(map: RID, cell_height: float) 🔗
Встановлює висоту карткової комірки, що використовується для стерилізації навігаторів сітки на вісь Y. Повинна відповідати висоті комірки використовуваних навігаторів.
void map_set_cell_size(map: RID, cell_size: float) 🔗
Встановлює розмір комірки, що використовується для растрової навігаційної сітки вершини на площині XZ. Необхідно відповідати розміру комірки використовуваних навігаторів.
void map_set_edge_connection_margin(map: RID, margin: float) 🔗
Налаштуйте діапазон з'єднання карт, який використовується для зварювання відповідних країв області.
void map_set_link_connection_radius(map: RID, radius: float) 🔗
Налаштуйте радіус підключення до карти, який використовується для підключення посилань на навігацію полігонів.
void map_set_merge_rasterizer_cell_scale(map: RID, scale: float) 🔗
Налаштуйте внутрішню об'єднану вагу растрового агента, яка використовується для контролю чутливості.
void map_set_up(map: RID, up: Vector3) 🔗
Налаштовує напрямок карти.
void map_set_use_async_iterations(map: RID, enabled: bool) 🔗
Якщо enabled має значення true, синхронізація map використовує асинхронний процес, який виконується у фоновому потоці.
void map_set_use_edge_connections(map: RID, enabled: bool) 🔗
Встановіть навігацію map використання краю. Якщо enabled є true, навігаційна карта дозволяє навігувати регіони для використання крайових з'єднань для підключення з іншими навігаційними регіонами в безпосередній близькості від навігації краю з'єднання.
Створення нової перешкоди.
bool obstacle_get_avoidance_enabled(obstacle: RID) const 🔗
Повертає true, якщо для наданого obstruction увімкнено функцію уникнення.
int obstacle_get_avoidance_layers(obstacle: RID) const 🔗
Повертаємо увагу avoidance_layers бітмаск вказаного obstacle.
float obstacle_get_height(obstacle: RID) const 🔗
Повертає height заданого obstacle.
RID obstacle_get_map(obstacle: RID) const 🔗
Повернення навігаційної карти RID запитується obstacle.
bool obstacle_get_paused(obstacle: RID) const 🔗
Повертаємо true, якщо зазначена obstacle буде припущена.
Vector3 obstacle_get_position(obstacle: RID) const 🔗
Повертає позицію вказаної obstacle у світовому просторі.
float obstacle_get_radius(obstacle: RID) const 🔗
Повертає радіус вказаного динамічного obstacle.
bool obstacle_get_use_3d_avoidance(obstacle: RID) const 🔗
Повертає true, якщо наданий obstacle використовує уникнення у 3D-просторі Vector3(x,y,z) замість горизонтального 2D Vector2(x,y) / Vector3(x,0.0,z).
Vector3 obstacle_get_velocity(obstacle: RID) const 🔗
Повертає швидкість вказаної динамічної obstacle.
PackedVector3Array obstacle_get_vertices(obstacle: RID) const 🔗
Повертає увагу на те, що для вказаного obstacle.
void obstacle_set_avoidance_enabled(obstacle: RID, enabled: bool) 🔗
Якщо enabled true, надана obstacle впливає на уникнення використання агентів.
void obstacle_set_avoidance_layers(obstacle: RID, layers: int) 🔗
Набір перешкод avoidance_layers bitmask.
void obstacle_set_height(obstacle: RID, height: float) 🔗
Налаштовує висоту height для obstacle. У 3D агенти ігнорують перешкоди, які вище або нижче їх за допомогою 2D уникнення.
void obstacle_set_map(obstacle: RID, map: RID) 🔗
Призначає obstacle навігаційній карті.
void obstacle_set_paused(obstacle: RID, paused: bool) 🔗
Якщо paused має значення true, то вказаний obstruction не буде оброблено. Наприклад, він більше не впливатиме на швидкість уникнення.
void obstacle_set_position(obstacle: RID, position: Vector3) 🔗
Оновлює позицію position у світовому просторі для obstacle.
void obstacle_set_radius(obstacle: RID, radius: float) 🔗
Налаштовує радіус динамічної перешкоди.
void obstacle_set_use_3d_avoidance(obstacle: RID, enabled: bool) 🔗
Налаштовує, якщо увімкнено obstacle 2D ухилення або увімкнення 3D.
void obstacle_set_velocity(obstacle: RID, velocity: Vector3) 🔗
Встановлює velocity динамічної obstacle. Дозволяє іншим агентам краще прогнозувати рух динамічної перешкоди. Працює лише в поєднанні з радіусом перешкоди.
void obstacle_set_vertices(obstacle: RID, vertices: PackedVector3Array) 🔗
Налаштовує контурні вершини для перешкоди. Якщо вершини заморожені в цілодобовому порядку агенти будуть підштовхуватися в перешкоді, то ще вони будуть виштовхуватися.
void parse_source_geometry_data(navigation_mesh: NavigationMesh, source_geometry_data: NavigationMeshSourceGeometryData3D, root_node: Node, callback: Callable = Callable()) 🔗
Парус SceneTree для геометрії джерела за властивостями Navigation_mesh. Оновлення наданої джерело_geometry_data ресурсу з отриманими даними. Після цього ресурс може бути використаний для запікання навігаційної сітки з bake_from_source_geometry_data(). Після завершення процесу буде викликано додаткове callback.
Примітка: Ця функція повинна працювати на головному нитці або з відстроченим виклик як SceneTree не є нижчою.
Продуктивність: Під час зручного читання масивів даних з ресурсів Mesh може негативно вплинути на частоту кадрів. Дані повинні бути отримані від GPU, стеблінгу RenderingServer в процесі. Для виконання воліє використання електронних форм зіткнення або створення масивів даних повністю в коді.
void query_path(parameters: NavigationPathQueryParameters3D, result: NavigationPathQueryResult3D, callback: Callable = Callable()) 🔗
Запитує шлях на даній навігаційній карті. Початкова та цільова позиція та інші параметри визначаються через NavigationPathQueryParameters3D. Оновлює наданий об’єкт результату NavigationPathQueryResult3D за допомогою шляху серед інших результатів, запитуваних запитом. Після завершення процесу буде викликано додатковий callback.
void region_bake_navigation_mesh(navigation_mesh: NavigationMesh, root_node: Node) 🔗
Застаріло: This method is deprecated due to core threading changes. To upgrade existing code, first create a NavigationMeshSourceGeometryData3D resource. Use this resource with parse_source_geometry_data() to parse the SceneTree for nodes that should contribute to the navigation mesh baking. The SceneTree parsing needs to happen on the main thread. After the parsing is finished use the resource with bake_from_source_geometry_data() to bake a navigation mesh.
Bakes the navigation_mesh з геометрією джерела випікання, зібраної з root_node.
Створення нового регіону.
AABB region_get_bounds(region: RID) const 🔗
Повертає вирівняну по осі обмежувальну рамку для трансформованої навігаційної сітки region.
Vector3 region_get_closest_point(region: RID, to_point: Vector3) const 🔗
Повертає точку поверхні навігаційної сітки, найближчу до заданого параметра to_point у області навігації region.
Vector3 region_get_closest_point_normal(region: RID, to_point: Vector3) const 🔗
Повертає нормаль поверхні навігаційної сітки, найближчу до наданого to_point у навігаційній region.
Vector3 region_get_closest_point_to_segment(region: RID, start: Vector3, end: Vector3, use_collision: bool = false) const 🔗
Повертає точку поверхні навігаційної сітки, найближчу до наданого сегмента start і end у навігаційній region.
Якщо use_collision має значення true, перевірка найближчої точки виконується лише тоді, коли сегмент перетинається з поверхнею навігаційної сітки.
Vector3 region_get_connection_pathway_end(region: RID, connection: int) const 🔗
Повертає кінцеву точку з'єднання door. connection – це індекс між 0 та поверненим значенням region_get_connections_count().
Vector3 region_get_connection_pathway_start(region: RID, connection: int) const 🔗
Повертає початкову точку з'єднання door. connection – це індекс між 0 та значенням, що повертається методом region_get_connections_count().
int region_get_connections_count(region: RID) const 🔗
Повертає кількість зв'язків цього region з іншими регіонами на карті.
bool region_get_enabled(region: RID) const 🔗
Повертаємо true, якщо вказана region включена.
float region_get_enter_cost(region: RID) const 🔗
Повертає введену вартість цього region.
int region_get_iteration_id(region: RID) const 🔗
Повертає поточний ідентифікатор ітерації області навігації. Щоразу, коли область навігації змінюється та синхронізується, ідентифікатор ітерації збільшується. Ідентифікатор ітерації 0 означає, що область навігації ніколи не синхронізувалася.
Примітка: Ідентифікатор ітерації переноситься на 1 після досягнення межі діапазону.
RID region_get_map(region: RID) const 🔗
Повертає навігаційну карту RID, якій наразі призначено запитуваний region.
int region_get_navigation_layers(region: RID) const 🔗
Повертає навігаційні шари регіону.
int region_get_owner_id(region: RID) const 🔗
Повертаємо ObjectID об'єкту, який керує цим регіоном.
Vector3 region_get_random_point(region: RID, navigation_layers: int, uniformly: bool) const 🔗
Повертає випадкове положення, підібране з усіх полігонів регіону з відповідними navigation_layers.
Якщо uniformly є true, всі області полігони та особи вагою їх поверхні (повільніше).
Якщо uniformly є false, просто випадкового полігону і обличчя підібрано (faster).
Transform3D region_get_transform(region: RID) const 🔗
Повертає глобальну трансформацію даної region.
float region_get_travel_cost(region: RID) const 🔗
Повертає вартість поїздки в цій region.
bool region_get_use_async_iterations(region: RID) const 🔗
Повертає true, якщо region використовує асинхронний процес синхронізації, який виконується у фоновому потоці.
bool region_get_use_edge_connections(region: RID) const 🔗
Повертає true, якщо навігаційний region налаштовано на використання граничних з’єднань для з’єднання з іншими навігаційними областями в межах поля з’єднання краю навігаційної карти.
bool region_owns_point(region: RID, point: Vector3) const 🔗
Повернення true, якщо надана point у світовому просторі в даний час належить до наданої навігації region. Власне в цьому контексті означає, що одна з локальних навігаційних сітчастих полігонів має можливе положення на найближчій відстані до цієї точки порівняно з усіма іншими навігаційними сітками з інших навігаційних регіонів, які також зареєстровані на навігаційній карті заданої області.
Якщо кілька навігаційних сіточок мають позиції на рівній відстані навігаційної області, полігони якого обробляються спочатку, перемагаючи володіння. Полігони обробляється таким же чином, що навігаційні регіони були зареєстровані на Навігаційній службі.
Примітка: Якщо навігаційні сітки з різних навігаційних регіонів перекриття (які слід уникати в цілому) результат не може бути очікуваним.
void region_set_enabled(region: RID, enabled: bool) 🔗
Якщо значення enabled має значення true, зазначений region внесе свій вклад у поточну карту навігації.
void region_set_enter_cost(region: RID, enter_cost: float) 🔗
Набори enter_cost для цього region.
void region_set_map(region: RID, map: RID) 🔗
Встановлює карту для регіону.
void region_set_navigation_layers(region: RID, navigation_layers: int) 🔗
Встановіть навігаційні шари регіону. Це дозволяє вибрати регіони з запиту на шлях (при використанні map_get_path()).
void region_set_navigation_mesh(region: RID, navigation_mesh: NavigationMesh) 🔗
Комплекти навігаційної сітки для регіону.
void region_set_owner_id(region: RID, owner_id: int) 🔗
Встановіть ObjectID об'єкту, який керує цим регіоном.
void region_set_transform(region: RID, transform: Transform3D) 🔗
Налаштовує глобальну трансформацію регіону.
void region_set_travel_cost(region: RID, travel_cost: float) 🔗
Набори travel_cost для цього region.
void region_set_use_async_iterations(region: RID, enabled: bool) 🔗
Якщо enabled має значення true, то region використовує процес асинхронної синхронізації, який виконується у фоновому потоці.
void region_set_use_edge_connections(region: RID, enabled: bool) 🔗
Якщо enabled є true, навігація region буде використовувати крайові з'єднання для підключення з іншими навігаційними регіонами в безпосередній близькості від навігації краю з'єднання.
void set_active(active: bool) 🔗
Контроль активації цього сервера.
void set_debug_enabled(enabled: bool) 🔗
Якщо true дозволяє режим навігаційного сервера.
PackedVector3Array simplify_path(path: PackedVector3Array, epsilon: float) 🔗
Повертає спрощену версію path з менш критичними точками шляху вилучено. Сума спрощування у світових підрозділах і управляється NeoSeo. Спрощування використовується варіант алгоритму Ramer-Douglas-Peucker для децимації кривих точок.
Удосконалення шляху може бути корисним, щоб пом'якшити різні шляхи, такі проблеми, які можуть виникати з певними типами агента та поведінками скриптів. Наприклад, агенти або уникнення в «відкритих полях».
RID source_geometry_parser_create() 🔗
Створення нового генератора геометрії джерела. Якщо Callable встановлюється для парсера з source_geometry_parser_set_callback(), зворотний дзвінок буде викликано для кожного окремого вузла, який отримує парсе, коли methodметод parse_source_geometry_data].
void source_geometry_parser_set_callback(parser: RID, callback: Callable) 🔗
Встановіть callback Callable для конкретної геометрії джерела parser. Callable отримає виклик з наступними параметрами:
navigation_mesh- Довідник NavigationMesh використовується для визначення параметрів парсера. Не відредагуйте або додайте безпосередньо до навігаційної сітки.source_geometry_data-НавігаціяMeshSourceGeometryData3Dпосилання. Додати геометрію джерела для навігаційної сітки для цього об'єкта.node- Node, який знаходиться в парсі.