// Creep has Energy packed
creep.say('E: ' + creep.carry.energy);
if (creep.carry.energy > 0) {
creep.moveTo(creep.room.controller);
creep.upgradeController(creep.room.controller);
}
// Creep has no Energy
else {
creep.moveTo(Game.spawns.Spawn1);
Game.spawns.Spawn1.transferEnergy(creep, creep.carryCapacity);
creep.moveTo(creep.room.controller);
creep.upgradeController(creep.room.controller);
}
上面的代码应该发送一个 Creep 来升级 Controller 。当它没有能量时,它会去产卵处获取一些能量。但它并没有移动到生成点,而是停留在 Controller 处。
问题:哪个命令正在取消 creep.moveTo(Game.spawns.Spawn1);
?
我是否必须使用 Creep 的内存
并添加一种状态,例如 isMoving: true
并跟踪它?
最佳答案
这正是你命令小兵要做的事情。倒数第三行将 moveTo 更改为 Controller 。删除此行和以下行。
如果你向 Creep 发送多个 moveTo,它只会执行最后一个。因为它覆盖了之前的 moveTo 命令。
关于screeps - Creep.moveTo() 是非阻塞方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31997285/