OGeek|极客世界-中国程序员成长平台

标题: ios - 当两个机构不联系时如何接收通知? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 15:27
标题: ios - 当两个机构不联系时如何接收通知?

DidBeginContact 我喜欢在两个机构不联系时收到通知。

我尝试使用 !(NOT) 运算符,但它不起作用。

if (!(firstBody.categoryBitMask == kBrickCategory && secondBody.categoryBitMask == kCarCategory)) {
    NSLog(@"Hit");



Best Answer-推荐答案


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|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4