GameplayKit:GKAgent的微调控制

时间:2015-09-09 15:52:58

标签: xcode swift sprite-kit xcode7 gameplay-kit

我正在使用spritekit测试gameplaykit。我已经为GKAgent添加了GKEntity,我正在让我的实体通过在触摸位置创建endAgent来寻求我的触摸。

这很有效。代理人自然地移动并追逐我的触摸。但是,我有两个问题..

如何在代理到达目的地时停止代理。代理人将永远四处奔波,试图准确地着陆。我已经尝试agent.behavior.removeAllGoals()我认为这会立即阻止代理,因为它没有目标......但没有任何反应。

第二个问题是我如何微调运动。对于像追逐飞机的导弹这样的东西来说,代理人是理想的。问题是它在达到目标时会减速。运动模式非常具体。我尝试过使用massmaxSpeed maxAcceleration等属性。我还缺少什么?

1 个答案:

答案 0 :(得分:1)

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

要在代理到达目的地时停止代理,您需要将代理作为其主要目标。检查每帧与目标的距离是什么,当你得到“足够接近”(无论你的游戏玩法如何)时,取出搜寻目标并用速度为零的目标速度目标替换它。 / p>

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