如何在TransporterFleet中设置指定运输机的基地位置
TransporterFleet 运输机基地位置问题解决方案
核心问题:直接调用运输机的
setHomeLocation()和jumpTo()仅修改了表面属性,未同步TransporterFleet模块的内部关联逻辑,也没正确更新运输机的当前位置状态。最优解决方案:提前指定基地分配规则
在TransporterFleet模块的「Transporters」配置页,将「Home location」的默认随机逻辑替换为自定义规则代码:- 示例:若有两个基地节点
baseA和baseB,要让编号前5台运输机绑定baseA,其余绑定baseB,代码如下:index < 5 ? baseA : baseB - 这里的
index是运输机的创建索引(从0开始),可根据你的“特定运输机”规则调整判断逻辑。
- 示例:若有两个基地节点
运行时动态修改基地的正确操作
若必须在运行中调整基地,不要直接调用运输机的setHomeLocation(),改用模块提供的官方方法:- 调用
transporterFleet.setTransporterHomeLocation(指定运输机, 新基地节点),同步模块内部状态。 - 使用
指定运输机.moveTo(新基地节点)替代jumpTo,该方法会同时更新视觉位置和内部的currentLocation属性。 - 后续任务分配时,确保以
指定运输机.getHomeLocation()作为起始点,避免依赖模块的初始缓存值。
- 调用
验证要点
修改后可通过打印日志确认:traceln("当前位置:" + transporter.getCurrentLocation()); traceln("基地位置:" + transporter.getHomeLocation());同时测试运输机完成任务后的返回行为,确认回到新设置的基地。
内容的提问来源于stack exchange,提问作者Ekaterina Makedonskaya
相关产品推荐
相关产品推荐

