我正在使用spritekit测试gameplaykit。我已经向我的GKEntity添加了一个GKAgent,并且我正在通过在触摸位置创建一个endAgent来让我的实体寻找我的触摸。
这很好用。代理自然地移动,追逐我的触觉。然而,我有两个问题..
当代理到达其目标时,我如何停止它。智能体将永远绕来绕去,试图准确地落在点上。我已经尝试过agent.behavior.removeAllGoals(),我想这会立即停止代理,因为它没有目标。但是什么也没发生。
第二个问题是如何微调移动。对于导弹追逐飞机之类的东西来说,智能体将是理想的选择。问题是,当它到达目标时,它会减速。运动模式是如此的具体。我尝试过使用mass、maxSpeed maxAcceleration等属性。我遗漏了什么吗?
发布于 2015-12-15 07:08:30
API描述了智能体的动机,但在某些方面,它们的行为更像物理体-也就是说,它们遵循牛顿第一定律并保持运动,除非“有动机”改变它们的速度或方向。
要在代理到达其目标时停止代理,您需要将停止作为其主要目标。检查每一帧你到目标的距离,当你“足够近”时(对于你的游戏来说,这是什么),拿出寻找目标,并用一个速度为零的目标速度目标代替它。
对于“热追踪导弹”行为,您可以尝试使用intercept-agent目标而不是搜索智能体目标,并改变预测时间,以了解这如何影响追逐速度。(一旦导弹离飞机足够近,你可能不需要让它停留在场景中,所以如果你可以将减速限制在“爆炸距离内”,你可以忽略它。)
https://stackoverflow.com/questions/32484157
复制相似问题