person-walkingАгенты движения/NPC

Используйте Movement_Agent для перемещения сущностей с учётом поиска пути и ограничений навмеша.

Агенты перемещения

Movement_Agent является компонентом-помощником для перемещения, используемым для управления движением и поиска пути.

Наиболее часто вы используете его для:

  • Запроса пути к цели (set_path_target)

  • Ограничения сущности до проходимого пространства (привязать к Navmesh)

circle-info

Эта страница охватывает перемещение и поиск пути. Для построения/запроса навмешей см. Навмеш и коллизии.

Справочник по API Movement_Agent

Movement_Agent :: class : Component {
    Set_Path_Target_Result :: struct {
        success:        bool;
        next_point:     v2;
        move_direction: v2;
    }

    // Запрос пути к цели с заданной скоростью.
    set_path_target :: method(target: v2, speed: float) -> Set_Path_Target_Result;

    // Ограничить этого агента навмешем (выравнивать к нему каждый кадр).
    // Передайте null, чтобы очистить.
    set_navmesh_to_lock_to :: method(navmesh: Navmesh);

    // Общая настройка/состояние
    movement_speed:   float;
    friction:         float;
    velocity:         v2;
    input_this_frame: v2;
}
circle-exclamation

Поиск пути (установка цели)

Вызовите set_path_target каждый кадр (или всякий раз, когда ваша цель меняется).

circle-info

set_path_target обрабатывается позже в кадре параллельно с другими агентами, поэтому в первый кадр после установки новой цели может не вернуться success == true.

Заблокировать движение на навмеше (остаться в проходимом пространстве)

Если сущность не должна покидать проходимое пространство, привяжите её к навмешу:

Вызовите это с null чтобы очистить.

Создание движущихся NPC

Это минимальный NPC «следуй за игроком», использующий агента перемещения:

Последнее обновление