仅在矩形物理体的一侧检测碰撞 - Swift3

时间:2017-04-28 17:51:06

标签: ios swift3 sprite-kit collision-detection

我目前正在开发一个2D无尽的跑步者,用Swift3编写并使用Spritekit。

简短问题:

有没有办法只检查角色矩形物理体右侧的碰撞?

更多信息:

角色在其上运行的平台由拼图块组成,用户随着游戏的进行在其上构建。角色从背景(从右到左)从左到右进行。

我希望角色在与右侧上的棋子碰撞时自动跳跃。但是,玩家放在他右边的任何棋子(与角色相同的Y值)都与他下面的棋子属于同一类。

因此,只要游戏检测到角色与他下面的棋子之间发生碰撞,同样的代码会检查角色和他右边的棋子之间的碰撞,并让他跳跃,这也会让他跳跃。

我一直无法找到像我这样的其他问题,因为通常其他人的角色会与地面上的不同类别的对象发生碰撞。

谢谢!

P.S。我试图让我的角色成为一个带有两个物理体的SKSpriteNode,但我找不到任何有用的文档。如果它有帮助,我的角色也会执行循环运行动画 - 虽然我无法想象这会伤害任何东西。

3 个答案:

答案 0 :(得分:3)

您可以通过检测与矩形的碰撞然后确定碰撞是否与您感兴趣的一侧相关来实现。这是discussion关于如何做到这一点。祝你好运!

答案 1 :(得分:1)

您是否尝试将非可见子节点(例如feetNode)添加到角色的精灵节点,并为该子节点提供物理体(类)以进行楼层接触?

根据逻辑的其余部分,它可能允许您为角色使用不同的物理类,在碰撞检测中具有更大的灵活性。

事实上,你可以在你角色的精灵节点中使用这种方法和几个子节点,并根据击中它的内容对角色有多种碰撞行为。

答案 2 :(得分:1)

获得碰撞的2个物体的接触点后,通过检查类别物体确定哪个物体是碰撞的物体,然后检查其CGPoints x位置。可以将此x位置与其他身体的x位置进行比较,以确切知道它与哪一侧发生碰撞。

如果身体A的x位置>身体B的x位置,身体A在右边,如果没有,它在左边。

就这么简单。 希望这有帮助!

相关问题