是否可以让 creep 交换位置同时移动?

Is it possible to have creeps swap positions moving simultaneously?

使用 moveTo() 函数,creep 将尝试绕过其他 creep,这可能会降低效率,同时尽量减少 creep 相互穿越所需的道路数量。是否可以让 2 个 creep 同时移动,以便他们在试图穿过彼此时可以交换空间,或者让他们交换空间作为一个动作?

是的,这是可能的。 moveTo() 方法有多个不同的选项,您可以将其作为输入提供。您应该查看 API documentation,但其中一个选项是 ignoreCreeps。默认值为 false。这意味着其他 creep 被算作障碍物。

将其更改为 true 需要一些准备工作。至少我建议进行某种卡住检测。如果一个 creep 试图移动,但在多个 tick 中都静止不动,它应该触发另一种方法。

其中一种方法可能是调查挡路的是什么。如果障碍物是另一个 creep,则该 creep 可能会尝试调用阻碍 creep 的 moveTo() 操作。