You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

疏散模型:如何让被拒入多边形拥堵节点的行人永久绕行?

疏散模型行人绕行拥堵区的解决方案

针对你遇到的行人切换出口后仍途经拥堵区的问题,可通过以下几种方式实现绕行逻辑:

1. 在拒入事件中给行人添加路径规避规则

在拥堵节点的On enter denied事件中,直接让被拒行人将该拥堵区标记为路径规避对象,强制其计算路径时避开该区域:

// 获取当前被拒的行人
Ped currentPed = (Ped) getAgent();
// 添加对拥堵多边形节点的路径规避
currentPed.addPathAvoidance(yourCongestionNode);
// 取消原前往exit1的动作
currentPed.cancelCurrentAction();
// 切换至前往exit2的GoTo块
goToExit2.take(currentPed);
// 强制行人重新规划路径
currentPed.getNavigation().replan();

说明:yourCongestionNode需替换为你创建的拥堵区多边形节点名称,goToExit2是指向次近出口的GoTo块名称。

2. 调整GoTo块的路径计算策略

打开指向exit2的GoTo块属性面板,找到Path calculation选项,设置为Always recalculate path。这能确保行人切换目标后,不会沿用之前缓存的途经拥堵区的路径,而是实时重新计算最优绕行路线。

3. 基于自定义参数限制行人进入拥堵区(备选方案)

如果路径规避效果不佳,可通过自定义参数永久限制被拒行人进入拥堵区:

  • 先给行人代理添加布尔类型参数(如avoidCongestion,默认值false)
  • 在拥堵节点的On enter denied事件中添加:
    ((Ped)getAgent()).avoidCongestion = true;
    
  • 修改拥堵节点的Allowed to enter条件,在原容量检查基础上追加:
    node.getNumberOfAgents() < 7 && !((Ped)agent).avoidCongestion
    

这样被拒过的行人后续会被永久拒绝进入该拥堵区,自然会选择绕行路线。

内容的提问来源于stack exchange,提问作者SA_2003

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 06:02:41