在 DidBeginContact 我喜欢在两个机构不联系时收到通知。
我尝试使用 !(NOT) 运算符,但它不起作用。
if (!(firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory)) {
NSLog(@"Hit");
Best Answer-推荐答案 strong>
didBeginContact 仅在发生碰撞时调用。您将 update 中的 Bool 设置为 false 并在 didBeginContact 中将其设置为 true if发生了碰撞。在 didFinishUpdate 中检查并采取相应措施。
示例代码使用 Swift,但应该很容易转换为 Objective-C。
class MyScene: SKScene, SKPhysicsContactDelegate {
var contactMadeThisFrame = false
override func update(currentTime: NSTimeInterval) {
contactMadeThisFrame = false
}
func didBeginContact(contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory {
contactMadeThisFrame = true
}
}
override func didFinishUpdate() {
if !contactMadeThisFrame {
print("Hit")
}
}
}
如果您想逐个节点检查(仅对未联系的节点执行操作),那么您可以遍历主体并检查 physicsBody.allContactedBodies 计数是否为零。在 didFinishUpdate 中执行此操作。
关于ios - 当两个机构不联系时如何接收通知?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/36049398/
|