我目前有两个节点在使用,其中一个是船(多边形),另一个是直的垂直矩形。船需要是一个多边形,以便它可以通过射弹击中,但是当它与垂直矩形碰撞时,由于它接触到的许多边,这会引起我的问题。因此,我想要运行一段代码而不是多次运行。
是否有冲突检测只对第一次接触起作用,以便它不会重复呼叫?
我知道将categoryBitMask设置为0,但这样做会使船无法被其他任何东西击中 - 这是我不想要的。此外,我考虑使用布尔变量仅在船经过时运行一次代码,但是如前所述,由于不同的侧面,代码认为它已经通过,而实际上它只是碰到船的另一侧。 / p>
除了设置物理实体之外,我没有太多的代码可以显示,所以我认为没有必要,但在didBeginContact()中我使用了categoryBitMask比较来检查碰撞。
我可能没有解释得很好,在这种情况下我道歉,我的英语不是最好的!
如果有人可以提供帮助,非常感谢,谢谢。
答案 0 :(得分:1)
您可以使用
将船舶的各个物理实体组合成一个整体+ (SKPhysicsBody *)bodyWithBodies:(NSArray *)bodies
然后测试与复合体的接触而不是单个组件。
答案 1 :(得分:0)
如果你是节点的子类,那么只需为它创建一个BOOL属性。
BOOL alreadyHit;
如果您不是子类,请使用SKNode的userData
字典并为其创建条目。