我目前有两个节点在使用,其中一个是船(多边形),另一个是直立的矩形。船需要是一个多边形,这样它才能被射弹击中,但是当它与垂直矩形碰撞时,由于它接触到的许多边,这会给我带来问题。因此,一段我只想运行一次的代码却运行了多次。
有没有办法让碰撞检测只对第一次接触起作用,这样它就不会重复调用?
我知道将 categoryBitMask 设置为 0,但是这样做会使船无法被其他任何东西击中——这是我不想要的。此外,我考虑使用 bool 变量在船通过时仅运行一次代码,但是如前所述,由于不同的侧面,代码认为它已经通过,而实际上它只是撞到船的另一侧。
除了设置物理体之外,我没有太多代码可以在这里显示,所以我认为没有必要,但在 didBeginContact() 内部,我使用 categoryBitMask 比较来检查碰撞。
我可能没有解释清楚,在这种情况下我很抱歉,我的英语不是最好的!
如果有人能提供帮助,我们将不胜感激,谢谢。
最佳答案
您可以将飞船的各个物理实体组合成一个实体
+ (SKPhysicsBody *)bodyWithBodies:(NSArray *)bodies
然后测试与复合体而不是单个组件的接触。
关于objective-c - 需要 SpriteKit 碰撞仅在第一次接触时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436206/