voxelcore/doc/ru/scripting/builtins/libpathfinding.md
Xertis 32feb78002
Improved docs (#708)
* начало переписи доков

* extensions update

* libapp update

* libfile update

* io_stream update

* Update io_stream.md

* io_stream update x3

* io_stream update x4

* libtime update

* libgui update + make bytearray.md

* libinput update

* Update libapp.md

* Update libapp.md

* libgui update

* events.md ru fix

* да ну не надо так делать

--> не имеет смысла, ибо гитхаб -> показывает адекватно

* types refactoring

* fixes

* Update libblock.md

* Update libblock.md

* Update libbyteutil.md
2025-12-18 12:58:39 +03:00

3.3 KiB
Raw Permalink Blame History

Библиотека pathfinding

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

При использовании в логике сущностей следует использовать компонент core:pathfinding.

Компонент core:pathfinding

local pf = entity:get_component("core:pathfinding")

--- ...
local x = ...
local y = ...
local z = ...

--- Установка цели для агента
pf.set_target({x, y, z})

--- Получение текущей цели агента
local target = pf.get_target() -> vec3 или nil
--- ...

--- Получение текущего маршрута агента
local route = pf.get_route() -> table<vec3> или nil
--- ...

Функции библиотеки

--- Создание нового агента. Возвращает идентификатор созданного агента
local agent = pathfinding.create_agent() -> int

--- Удаление агента по идентификатору. Возвращает true, если агент существовал, иначе false
pathfinding.remove_agent(agent: int) -> boolean

--- Установка состояния агента (включен/выключен)
pathfinding.set_enabled(agent: int, enabled: boolean)

--- Проверка состояния агента. Возвращает true, если агент включен, иначе false
pathfinding.is_enabled(agent: int) -> boolean

--- Создание маршрута на основе заданных точек. Возвращает массив точек маршрута
pathfinding.make_route(start: vec3, target: vec3) -> table<vec3>

--- Асинхронное создание маршрута на основе заданных точек.
--- Функция позволяет выполнять поиск пути в фоновом режиме, не блокируя основной поток выполнения
pathfinding.make_route_async(agent: int, start: vec3, target: vec3)

--- Получение маршрута, который агент уже нашел. Используется для получения маршрута после асинхронного поиска.
--- Если поиск ещё не завершён, возвращает nil. Если маршрут не найден, возвращает пустую таблицу.
pathfinding.pull_route(agent: int) -> table<vec3> или nil

--- Установка максимального количества посещенных блоков для агента. Используется для ограничения объема работы алгоритма поиска пути.
pathfinding.set_max_visited(agent: int, max_visited: int)

--- Добавление тега избегаемых блоков
pathfinding.avoid_tag(
    agent: int,
    -- тег избегаемых блоков
    tag: string, [опционально],
    -- стоимость пересечения блока
    cost: int = 10
)