在 DidBeginContact
我喜欢在两个机构不联系时收到通知。
我尝试使用 !(NOT)
运算符,但它不起作用。
if (!(firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory)) {
NSLog(@"Hit");
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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |