为什么我的代码从未检测到与我的SKPhysicsBody的任何联系?

时间:2017-11-14 00:57:25

标签: swift sprite-kit skphysicsbody

我遇到的问题是我为检测联系而创建的代码无效。当球类触及障碍类时,我希望它能够工作。我的代码出了什么问题?非常感谢,任何帮助表示赞赏!

我在哪里定义类别:

let ballCategory : UInt32 = 0x1 << 1
let obstacleCategory : UInt32 = 0x1 << 2

在我创建球的物理方面的地方:

    leftBall.physicsBody = SKPhysicsBody(rectangleOf: leftBall.size)
    leftBall.physicsBody?.categoryBitMask = ballCategory
    leftBall.physicsBody?.contactTestBitMask = obstacleCategory
    leftBall.physicsBody?.affectedByGravity = false
    leftBall.physicsBody?.isDynamic = false
    leftBall.physicsBody?.collisionBitMask = 0

在我创造障碍的物理方面的地方:

    obstacleSquare.physicsBody = SKPhysicsBody(rectangleOf: obstacleSquare.size)
    obstacleSquare.physicsBody?.categoryBitMask = obstacleCategory
    obstacleSquare.physicsBody?.contactTestBitMask = ballCategory
    obstacleSquare.physicsBody?.affectedByGravity = false
    obstacleSquare.physicsBody?.isDynamic = false
    obstacleSquare.physicsBody?.collisionBitMask = 1

继承我的碰撞检测功能:

func didBegin(_ contact: SKPhysicsContact) {

    print("CONTACT")

    if contact.bodyA.categoryBitMask == obstacleCategory {

        print("CONTACT")
        gameOver()

    }

    if contact.bodyB.categoryBitMask == obstacleCategory {

        print("CONTACT")
        gameOver()

    }

    if contact.bodyA.categoryBitMask == ballCategory {

        print("CONTACT")
        gameOver()

    }

    if contact.bodyB.categoryBitMask == ballCategory {

        print("CONTACT")
        gameOver()

    }

}

1 个答案:

答案 0 :(得分:1)

您的两个对象的物理实体都将其newStr = ''.join([x for pair in zip(str1, str2) for x in pair]) 属性设置为false。对于要注册的任何联系人,其中至少有一个需要将此属性设置为true。