2016-05-22 10 views
0

私はコインを永久に生み出す機能を作りました。 しかし、ボールに当たったコインを取り除くことができません。ちなみに、私はクラス内でfalseに設定された変数coinBooleanを持っています。ここに私のコードはあります:ブール値がtrueの場合、このノードを削除するにはどうすればよいですか?

func didBeginContact(contact: SKPhysicsContact) { 
    if ((contact.bodyA.categoryBitMask == groundGroup && contact.bodyB.categoryBitMask == ballGroup) || 
     (contact.bodyA.categoryBitMask == ballGroup && contact.bodyB.categoryBitMask == groundGroup)) { 
    } 
    if ((contact.bodyA.categoryBitMask == ballGroup && contact.bodyB.categoryBitMask == coinGroup) || 
     (contact.bodyA.categoryBitMask == coinGroup && contact.bodyB.categoryBitMask == ballGroup)) { 
     print("TRUE") 
     coinBoolean = true 
    } 
    else { 
     print("false") 
     coinBoolean = false 
    } 
} 

func addAndMoveCoins() { 
    let coin = SKSpriteNode(imageNamed: "Coin") 

    coin.zPosition = 55 
    coin.position = CGPoint(x: self.frame.size.width*0.9, y: randomY()) 
    coin.physicsBody = SKPhysicsBody(rectangleOfSize: coin.size) 
    coin.physicsBody?.categoryBitMask = coinGroup 
    coin.physicsBody?.contactTestBitMask = ballGroup 
    coin.physicsBody?.affectedByGravity = false 
    coin.physicsBody?.dynamic = false 
    let moveCoinLeft = SKAction.moveByX(-self.size.height, y: 0, duration: 5) 
    let repeatAction1 = SKAction.repeatActionForever(moveCoinLeft) 
    let removeObstacle1 = SKAction.removeFromParent() 
    let moveAndRemove1 = SKAction.sequence([repeatAction1, removeObstacle1]) 
    coin.runAction(moveAndRemove1) 
    self.addChild(coin) 
    if coinBoolean == true { 
     coin.removeFromParent() 
    } 
    else if coinBoolean == false { 
    } 
} 

func repeatCoins() { 
    let generateCoins = SKAction.sequence([SKAction.runBlock(self.addAndMoveCoins), SKAction.waitForDuration(1.3)]) 
    let endlessAction = SKAction.repeatActionForever(generateCoins) 
    runAction(endlessAction) 
} 
+0

のコインオブジェクトである場合にも、私は))(関数repeatCoinsを走っdidMovetoViewにし、(addAndMoveCoinsを実行didntはチェックする必要があります –

答えて

0

あなたのcoinBoolean変数がおそらく速く変化しています。衝突から削除するノード(bodyAまたはbodyB)を取得して親ノードから削除することをお勧めします。

0

ブーリアンを実行する代わりに接触フェーズでコインオブジェクトにアクションを設定するだけです。

contact.bodyA.node.runAction(SKAction.removeFromParent())

あなたはbodyAはもちろん

関連する問題