截至目前,我有一個SKSpriteNode,可以檢測我的球與我的球碰撞,並在我們的分數相撞時增加+1。在碰撞中,也是檢測我的球是否撞牆的代碼。衝突檢測中斷另一次碰撞檢測 - 斯威夫特
let scoreNode = SKSpriteNode()
scoreNode.size = CGSize(width: 750, height: 10)
scoreNode.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2 + 100)
scoreNode.physicsBody = SKPhysicsBody(rectangleOfSize: scoreNode.size)
scoreNode.physicsBody?.affectedByGravity = false
scoreNode.physicsBody?.dynamic = true
scoreNode.physicsBody?.categoryBitMask = PhysicsCat.Score
scoreNode.physicsBody?.collisionBitMask = 0
scoreNode.physicsBody?.contactTestBitMask = PhysicsCat.Ball
scoreNode.color = SKColor.clearColor()
func didBeginContact(contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == PhysicsCat.Score && secondBody.categoryBitMask == PhysicsCat.Ball{
score += 1
scoreLbl.text = "\(score)"
firstBody.node?.removeFromParent()
}
else if firstBody.categoryBitMask == PhysicsCat.Ball && secondBody.categoryBitMask == PhysicsCat.Score {
score += 1
scoreLbl.text = "\(score)"
secondBody.node?.removeFromParent()
}
else if firstBody.categoryBitMask == PhysicsCat.Ball && secondBody.categoryBitMask == PhysicsCat.Wall || firstBody.categoryBitMask == PhysicsCat.Wall && secondBody.categoryBitMask == PhysicsCat.Ball{
enumerateChildNodesWithName("wallPair", usingBlock: ({
(node, error) in
node.speed = 0
self.removeAllActions()
}))
if died == false{
died = true
createBTN()
fallDie()
}
}
else if firstBody.categoryBitMask == PhysicsCat.Ball && secondBody.categoryBitMask == PhysicsCat.Wall {
enumerateChildNodesWithName("wallPair", usingBlock: ({
(node, error) in
node.speed = 0
self.removeAllActions()
}))
if died == false{
died = true
Ball.physicsBody?.velocity = CGVectorMake(0, 0)
createBTN()
}
}
}
我需要與上述代碼完全分開的第二次碰撞檢測^^。我如何讓他們分開?你不能有兩個didBeginContact我不認爲。我希望這不是太模糊或不清楚。所以顯然我需要第二個節點,稱它爲colorNode。我如何檢測到我的球和colorNode(colorNode在我的scoreNode下面大約200像素,所以它們不在同一位置)之間的碰撞,而不會搞亂我的代碼來檢測球和牆之間的碰撞?