Ab sofort habe ich einen SKSpriteNode, der Kollisionen mit meinem Ball erkennt und meine Punktzahl um +1 erhöht, wenn sie kollidieren. Auch in der Kollision ist der Code, der erkennt, wenn mein Ball eine Wand trifft.Kollisionserkennung unterbricht eine andere Kollisionserkennung - 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()
}
}
}
Ich brauche eine zweite Kollisionserkennung, die vollständig von dem obigen Code ^^ getrennt ist. Wie mache ich sie getrennt? Du kannst nicht zwei didBeginContact haben, denke ich nicht. Ich hoffe, das ist nicht zu vage oder unklar. Also brauche ich natürlich einen zweiten Knoten, den ich colorNode nenne. Wie würde ich eine Kollision zwischen meinem Ball und colorNode feststellen (colorNode ist etwa 200 Pixel unter meinem scoreNode, also sind sie nicht in der gleichen Position), ohne meinen Code, der eine Kollision zwischen dem Ball und der Wand erkennt, zu vermasseln?