person-walking移动代理/NPC

使用 Movement_Agent 在路径查找和导航网格约束下移动实体。

移动代理

Movement_Agent 是用于寻路和路径规划的移动辅助组件。

通常,你会用它来:

  • 向目标请求路径(set_path_target)

  • 将实体约束到可行走区域(锁定到一个 导航网格)

circle-info

本页涵盖移动和路径查找。有关构建/查询导航网格,请参见 导航网格与碰撞.

Movement_Agent API 参考

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:

最后更新于