8

我尝试像这样使用 findNearest:

var sources = creep.room.findNearest(Game.SOURCES) 
creep.moveTo(sources[0]);
creep.harvest(sources[0]);

这就是我得到的:

TypeError: undefined is not a function
at module.exports:5:28
at <main>:11:6

如何使用此方法和 findInRange 以使它们不会导致此错误?

4

2 回答 2

11

这里有几点需要注意:

  1. findNearest()不在房间内的对象。简单修复var sources = creep.pos.findNearest(Game.SOURCES)
  2. findNearest()不返回对象数组,它返回一个对象(特别是最近的对象)或null. 此处的解决方法是更改​​您必须更改的内容creep.moveTo(sources);(您可能希望使用sources单数以避免混淆)
  3. 你没有提供代码,但我猜你正在做类似creep.room.findInRange()的事情,它不在房间对象中,它在 pos 所以它看起来像这样,creep.pos.findInRange().
  4. 令人困惑的是, room 中唯一的功能是find(), lookAt(), findPath(),makeSnapshot()而 pos 还有很多(在文档中的 roomposition 中列出)

如果您查看文档here for room 和here for roomposition 并滚动到底部,您可以看到哪些函数在哪个对象中。

于 2014-11-21T09:57:16.340 回答
0

我可以看到文档已经更新,现在有一些示例代码。

http://screeps.com/docs/RoomPosition.php

于 2014-11-21T08:10:17.670 回答