如何设置Source块到达位置,在ship2 agent内生成指定XYZ坐标的物料agent
解决方案
完全可以通过Source块实现你的需求,不需要预先创建大量Node,也可以直接对接自定义坐标生成函数,两种可行方案如下:
方案1:直接使用Source块(推荐,配置最简单)
你选择Location of Arrival为(x,y,z)模式后,按以下规则配置即可:
- 首先将Agent container字段设置为
ship2,这一步是核心:只有指定容器为ship2,后续填写的XYZ才会以ship2的本地坐标系为参考,而不是main的全局坐标系 - X、Y、Z三个输入框支持直接填数值、动态表达式、自定义函数返回值,你直接调用自己写的坐标生成函数即可,不需要特殊语法
举个实际配置示例,如果你要在ship2内部X坐标10~20随机、Y固定为8、Z固定为0的位置生成物料,直接填写:
- X:
uniform(10, 20) - Y:
8 - Z:
0
配置完成后生成的物料会直接出现在ship2内部对应坐标,无需额外设置。
方案2:使用Enter块(适合生成逻辑更复杂的场景)
如果你的物料生成需要自定义触发时机、或者生成前有大量前置校验逻辑,可以选择Enter块方案:
- 手动创建物料Agent实例,创建时直接指定容器和坐标:
// 替换为你自己的物料Agent类型、坐标生成函数 MaterialAgent newMaterial = add_MaterialAgent(ship2, genX(), genY(), genZ());
- 调用Enter块的take方法把创建好的Agent推入流程:
enterBlock.take(newMaterial);
补充提示
如果你拿到的是main下的全局坐标,需要转换为ship2的本地坐标,可以直接调用内置转换方法:
- 本地X坐标:
ship2.toLocalX(globalX, globalY) - 本地Y坐标:
ship2.toLocalY(globalX, globalY) - 本地Z坐标:
ship2.toLocalZ(globalZ)
内容的提问来源于stack exchange,提问作者bluechimp
相关产品推荐
相关产品推荐

