2

我正在使用 spritekit 测试 gamekit。我已经添加了一个GKAgent到我的GKEntity,我正在让我的实体通过创建一个endAgent接触位置来寻找我的接触。

这很好用。经纪人自然地移动并追逐我的触球。但是,我有两个问题..

当代理到达目的地时如何停止它。代理将永远绕圈,试图准确地落在该点上。我已经尝试过agent.behavior.removeAllGoals() ,我认为这会立即阻止代理,因为它没有目标..但没有任何反应。

第二个问题是如何微调运动。对于像导弹追逐飞机这样的事情来说,代理是理想的选择。问题是它在达到目标时会减速。运动模式是如此具体。我试过玩属性massmaxSpeed maxAcceleration。我缺少什么吗?

4

1 回答 1

1

API 根据其动机来描述代理,但在某些方面,它们的行为更像物理体——也就是说,它们遵循牛顿第一定律并保持运动,除非“有动机”改变它们的速度或方向。

要在代理到达目的地时停止它,您需要将停止作为其主要目标。每帧检查你到目标的距离是多少,当你“足够近”时(无论对你的游戏来说什么都算),取出搜索目标并将其替换为速度为零的目标速度目标。

对于“热追踪导弹”行为,您可以尝试使用拦截代理目标而不是寻找代理目标并改变预测时间以查看它如何影响追踪速度。(一旦导弹离飞机足够近,你可能不需要它留在场景中,所以如果你可以将减速限制在“爆炸距离内”,你可以忽略它。)

于 2015-12-14T23:08:29.840 回答