現在のところ、私はボールとの衝突を検出し、衝突したときにスコアを+1するSKSpriteNodeを持っています。また、衝突には、ボールが壁に当たったかどうかを検出するコードがあります。別の衝突検出を中断する衝突検出 - Swift
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()
}
}
}
私は上記のコードとは完全に別の2番目の衝突検出が必要です^^。どのようにそれらを別々にするのですか?私はdidBeginContactを2つ持つことはできません。私はこれがあまりにもあいまいでも不明瞭でもないと願っています。だから明らかに私はそれをcolorNodeと呼ぶ2番目のノードが必要です。私のボールとcolorNode(colorNodeは私のscoreNodeの約200ピクセル下にあり、同じ位置にないので、ボールと壁の衝突を検出するコードを乱すことはありません)との衝突をどうやって検出しますか?