SpriteKit didEndContact 未被调用
SpriteKit didEndContact not being called
在我的 didEndContact:
方法中,我增加了一个 "currentScore"。
出于某种原因,didEndContact:
没有被调用 ,因此 "currentScore" 没有被递增。任何想法为什么或我应该寻找什么来调试它?
func didEndContact(contact: SKPhysicsContact) {
guard goal!.barEnabled else { return }
score += 1
}
这是相关代码,如果我还可以添加任何其他有用的详细信息,请告诉我:
var barEnabled:Bool {
set {
bar?.physicsBody?.collisionBitMask = newValue ? CollisionMask.Puck : CollisionMask.None
bar?.physicsBody?.categoryBitMask = newValue ? CollisionMask.Goal : CollisionMask.None
}
get {
return bar?.physicsBody?.collisionBitMask == CollisionMask.Puck
}
}
为了检测碰撞,您必须设置 physicsBody
的 contactTestBitMask
。
当对 2 个整数应用二进制 AND 运算时,physicsBodys
的 contactTestBitMask
和另一个 physicsBodys
的 categoryBitMask
必须不为 0检测触发。
如果您还没有,请确保场景的 physicsWorld.contactDelegate
设置为 self
并且它实现了 SKPhysicsContactDelegate
.
在我的 didEndContact:
方法中,我增加了一个 "currentScore"。
出于某种原因,didEndContact:
没有被调用 ,因此 "currentScore" 没有被递增。任何想法为什么或我应该寻找什么来调试它?
func didEndContact(contact: SKPhysicsContact) {
guard goal!.barEnabled else { return }
score += 1
}
这是相关代码,如果我还可以添加任何其他有用的详细信息,请告诉我:
var barEnabled:Bool {
set {
bar?.physicsBody?.collisionBitMask = newValue ? CollisionMask.Puck : CollisionMask.None
bar?.physicsBody?.categoryBitMask = newValue ? CollisionMask.Goal : CollisionMask.None
}
get {
return bar?.physicsBody?.collisionBitMask == CollisionMask.Puck
}
}
为了检测碰撞,您必须设置 physicsBody
的 contactTestBitMask
。
当对 2 个整数应用二进制 AND 运算时,physicsBodys
的 contactTestBitMask
和另一个 physicsBodys
的 categoryBitMask
必须不为 0检测触发。
如果您还没有,请确保场景的 physicsWorld.contactDelegate
设置为 self
并且它实现了 SKPhysicsContactDelegate
.