防止节点离开边界

时间:2016-03-03 02:26:12

标签: ios sprite-kit skspritenode gameplay-kit

我正在使用GameplayKit在给定地图边界的障碍物周围创建路径(比如说矩形1000x1000)。

我知道你可以让某些节点在寻路时避免“障碍”,我使用得非常好。然而,我很好奇的是:

  • 有没有办法使用同样的逻辑并将地图边界中的任何计为“障碍”?

解决方法是创建2个SKNode并将它们组合在一起以创建一个内部“洞”,该洞变为1000x1000,但是如果有更好的方法,我试图避免不必要的节点添加。下面我展示了我能做什么。

理想情况我想将红色和黑色区域视为障碍物,以便所有路径主广场内。

enter image description here

更新 正如我已经说过的那样,我正在使用 GameplayKit ,并且寻路算法无法将未包含在给定物理主体中的区域计为障碍。它只能将障碍计算为位于区域内的闭合多边形。如上所示创建2个节点的工作原理是因为路径查找现在无法创建任何位于外部绿色矩形的点。

1 个答案:

答案 0 :(得分:1)

让你的游戏像这样分层

Scene
  SKNode topshape
  SKNode bottomshape
  SKNode innerbox <-- This is the size of your inner square
    SKNode  gamenodes <-- Place all inner nodes here
    ...

然后使用内部框大小的边缘循环矩形将SKPhysicsBody附加到innerbox SKNode并将其设为墙类别,这会将所有节点保留在内部,只要您的节点不移动疯狂的速度打破了引擎。

您将添加1个额外节点而不是2个(从技术上讲,您可以制作Bottomshape和topshape 1节点,使其添加0个节点),但所有处理都将在内部节点内完成,因此不会增加太多开销。< / p>