objective-c - 需要 SpriteKit 碰撞仅在第一次接触时发生

标签 objective-c swift sprite-kit

我目前有两个节点在使用,其中一个是船(多边形),另一个是直立的矩形。船需要是一个多边形,这样它才能被射弹击中,但是当它与垂直矩形碰撞时,由于它接触到的许多边,这会给我带来问题。因此,一段我只想运行一次的代码却运行了多次。

有没有办法让碰撞检测只对第一次接触起作用,这样它就不会重复调用?

我知道将 categoryBitMask 设置为 0,但是这样做会使船无法被其他任何东西击中——这是我不想要的。此外,我考虑使用 bool 变量在船通过时仅运行一次代码,但是如前所述,由于不同的侧面,代码认为它已经通过,而实际上它只是撞到船的另一侧。

除了设置物理体之外,我没有太多代码可以在这里显示,所以我认为没有必要,但在 didBeginContact() 内部,我使用 categoryBitMask 比较来检查碰撞。

我可能没有解释清楚,在这种情况下我很抱歉,我的英语不是最好的!

如果有人能提供帮助,我们将不胜感激,谢谢。

最佳答案

您可以将飞船的各个物理实体组合成一个实体

+ (SKPhysicsBody *)bodyWithBodies:(NSArray *)bodies

然后测试与复合体而不是单个组件的接触。

关于objective-c - 需要 SpriteKit 碰撞仅在第一次接触时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436206/

相关文章:

iphone - 当前位置的注释

iOS 8 UITableViewRowAction : Swipe Left, 图片?

arrays - swift 3 : Remove specific string from array without knowing the indexPath?

objective-c - LSUIElement代理应用程序更新核心数据后,如何通知其他应用程序?

iphone - 以编程方式创建字典属性列表

json - 嵌套 JSON Feed 返回错误

ios - 名称和便利初始值设定项

ios - SpriteKit : SKSpriteNode containing another SKSpriteNodes but only one SKPhysicsBody

swift - 预设节点不与用户触摸的创建节点发生冲突

swift - 如何在第一层SWIFT上添加SKNode