使用 gotoPopulation 时将代理保持在同一位置
Keeping agent in the same location when using gotoPopulation
我在另一个代理人(船)中有大量代理人(容器)。这是必需的,这样集装箱才能随船移动。船停靠后,我希望容器从 'ship' 中的人口变为 'main' 中的人口。当我使用以下
gotoPopulation(main.containers_main);
发送容器代理到主环境中的容器人口,容器将移动到主环境中的0,0。
以上代码放在容器代理中。
有没有办法改变代理的人口但保持在同一位置?
谢谢
我不这么认为。至于代理,没有“相同位置”,它们总是相对于某物(以前是相对于Ship
,现在是相对于main
)。
但您可以通过以下方式手动将它们定位在相同的(明显的)位置:
- 获取容器在
main
上的相对位置,同时仍在 Ship
中:getX() + ship.getX()
(与 Y 相同,假设 ship 嵌入 Main 中,container 嵌入 Ship 中)--> store短暂地双 myPosX
- 像上面那样移动到 main 上的新人口
- 设置相对于 Main 的“新”位置:
setX(myPosX)
这听起来很麻烦但很有意义,一旦您了解嵌入式代理位置总是相对于它们的父位置。删除父项,您需要考虑调整相对位置以将它们保持在(看似)“相同”的位置
我在另一个代理人(船)中有大量代理人(容器)。这是必需的,这样集装箱才能随船移动。船停靠后,我希望容器从 'ship' 中的人口变为 'main' 中的人口。当我使用以下
gotoPopulation(main.containers_main);
发送容器代理到主环境中的容器人口,容器将移动到主环境中的0,0。
以上代码放在容器代理中。
有没有办法改变代理的人口但保持在同一位置?
谢谢
我不这么认为。至于代理,没有“相同位置”,它们总是相对于某物(以前是相对于Ship
,现在是相对于main
)。
但您可以通过以下方式手动将它们定位在相同的(明显的)位置:
- 获取容器在
main
上的相对位置,同时仍在Ship
中:getX() + ship.getX()
(与 Y 相同,假设 ship 嵌入 Main 中,container 嵌入 Ship 中)--> store短暂地双myPosX
- 像上面那样移动到 main 上的新人口
- 设置相对于 Main 的“新”位置:
setX(myPosX)
这听起来很麻烦但很有意义,一旦您了解嵌入式代理位置总是相对于它们的父位置。删除父项,您需要考虑调整相对位置以将它们保持在(看似)“相同”的位置