

何回か、質問させていただいて改善してみたのですが、下のほうにあるタッチイベントでスプライトノードが消えません。  
printは実行されているのですが、ノードをタッチしてみても消えません。  
どなたか、解決方法をお知りの方はご助力お願いします。

[code]

    import SpriteKit
    import GameplayKit
    
    
    class GameScene: SKScene {
    
        private var moveToAction :SKAction!
    //    ランダムを使う準備
        let randomSource = GKARC4RandomSource()
    
        var mySprite : SKSpriteNode!
        var mySprite2 : SKSpriteNode!
        var mySprite3 : SKSpriteNode!
        var mySprite4: SKSpriteNode!
        var mySprite5 : SKSpriteNode!
        var mySprite6 : SKSpriteNode!
        var mySprite7 : SKSpriteNode!
        var mySprite8 : SKSpriteNode!
    
         override func didMoveToView(view: SKView) {
    
            //        画像からスプライトを作成する
            let mySprite = SKSpriteNode(imageNamed: "kuri_2.png")
            //        サイズプロパティでサイズを設定
            mySprite.size = CGSize(width: 100, height: 100)
            //        ポジションプロパティで設定
            // 画像の描画場所を指定.
            mySprite.position = CGPoint(x: 500, y: 0)
    //        初期速度を設定する
            mySprite.physicsBody?.velocity = CGVectorMake(10.0, 10.0)
            // 摩擦係数を０に設定.
            mySprite.physicsBody?.friction = 0.0
    
    
    
            addChild(mySprite)
    
    
    //        たくさんの敵をつくります
            let mySprite2 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite2.size = CGSize(width: 100, height: 100)
            mySprite2.position  = CGPoint(x: -100, y: 500)
            addChild(mySprite2)
    
            let mySprite3 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite3.size = CGSize(width: 100, height: 100)
            mySprite3.position  = CGPoint(x: 0, y: 0)
            addChild(mySprite3)
    
            let mySprite4 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite4.size = CGSize(width: 100, height: 100)
            mySprite4.position  = CGPoint(x: 1000, y: 1000)
            addChild(mySprite4)
    
            let mySprite5 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite5.size = CGSize(width: 100, height: 100)
            mySprite5.position  = CGPoint(x: 500, y: 1000)
            addChild(mySprite5)
    
            let mySprite6 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite6.size = CGSize(width: 100, height: 100)
            mySprite6.position  = CGPoint(x: 0, y: 1000)
            addChild(mySprite6)
    
            let mySprite7 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite7.size = CGSize(width: 100, height: 100)
            mySprite7.position  = CGPoint(x: 1000, y: 500)
            addChild(mySprite7)
    
            let mySprite8 = SKSpriteNode(imageNamed: "kuri_2.png")
            mySprite8.size = CGSize(width: 100, height: 100)
            mySprite8.position  = CGPoint(x: 1000, y: 0)
            addChild(mySprite8)
    
    
    
    
    
    
    
    
            //        回転の動きをいれる
            let action1 = SKAction.rotateByAngle(CGFloat(360 * M_PI / 180), duration: 1)
            let action3 = SKAction.repeatActionForever(action1)
    
    //        ランダムな秒数待つ動き
            let wait1 = SKAction.waitForDuration(1.0, withRange: 2.0)
    //        ランダムな秒数で動き出す
            let randomSec = Double(randomSource.nextIntWithUpperBound(30)) / 10.0 + 3.0
    
            //        指定した位置まで移動させる
            let action4 = SKAction.moveTo(CGPoint(x: 512, y: 380), duration: randomSec)
    
                    //        複数の動きを同時に処理
            let actionx = SKAction.group([action1,action3,action4,wait1])
            //        これらの処理をリピートさせる
            let actionR = SKAction.repeatActionForever(actionx)
    
    
    //        それぞれの出現時間を変えたい
            let action2y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action2x = SKAction.sequence([action2y, actionx,actionR])
    
            let action3y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action3x = SKAction.sequence([action3y, actionx,actionR])
    
            let action4y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action4x = SKAction.sequence([action4y, actionx,actionR])
    
            let action5y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action5x = SKAction.sequence([action5y, actionx,actionR])
    
            let action6y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action6x = SKAction.sequence([action6y, actionx,actionR])
    
            let action7y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action7x = SKAction.sequence([action7y, actionx,actionR])
    
            let action8y = SKAction.waitForDuration(2.0,withRange: 10.0)
            let action8x = SKAction.sequence([action8y, actionx,actionR])
    
    
    
    
    
    
            //        動きをつけます
            mySprite.runAction(actionx)
            mySprite2.runAction(action2x)
            mySprite3.runAction(action3x)
            mySprite4.runAction(action4x)
            mySprite5.runAction(action5x)
            mySprite6.runAction(action6x)
            mySprite7.runAction(action7x)
            mySprite8.runAction(action8x)
    
    
    //        センターの栗をつくる
            let centerKuri = SKSpriteNode(imageNamed: "kuri_5.png")
            centerKuri.size = CGSize(width: 100, height: 100)
            centerKuri.position =  CGPointMake(self.size.width/2.0,self.size.height/2.0)
    
            addChild(centerKuri)
    
    //        クリスマスツリーをつくる
            let tree = SKSpriteNode(imageNamed: "sozai.png")
            tree.size = CGSize(width: 300, height: 300)
            tree.position =  CGPointMake(self.size.width/2.0,self.size.height/1.5)
    
            addChild(tree)
    
    
    
        }
    
        override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    
            // マルチタッチを有効にする
            self.view?.multipleTouchEnabled = true
    
            // 一つの情報を取り出します
            for touch in touches {
                // シーン上の位置をとりだします
                let location = touch.locationInNode(self)
                // その位置にあるノードをしらべる
                let touchNodes = self.nodesAtPoint(location)
                // ノードひとつひとつを調べる
                for tNode in touchNodes {
                    // タッチしたノードが敵なら消す
                    // mySpriteを削除.
                    if tNode == ([mySprite,mySprite2,mySprite3,mySprite4,mySprite5,mySprite6,mySprite7,mySprite8]){
                        removeChildrenInArray([mySprite,mySprite2,mySprite3,mySprite4,mySprite5,mySprite6,mySprite7,mySprite8]) }
                    print(tNode)
    
                }
            }
        }
    
        override func update(currentTime: CFTimeInterval) {
            /* Called before each frame is rendered */
    
                }
    }
    
[/code]


CC BY-SA 3.0
2015-12-12T06:08:34.273
19903
2016-03-11T08:06:42.777
2015-12-12T06:23:07.317
7362
13372
question
ios spritekit
スプライトノードが消えない理由がわからない

[code]

    for tNode in touchNodes {
        // タッチしたノードが敵なら消す
        // mySpriteを削除.
        if tNode == ([mySprite,mySprite2,mySprite3,mySprite4,mySprite5,mySprite6,mySprite7,mySprite8]) {
        removeChildrenInArray([mySprite,mySprite2,mySprite3,mySprite4,mySprite5,mySprite6,mySprite7,mySprite8])
        }
        print(tNode)
    }
    
[/code]

`SKNode`（`SKSpriteNode`）のインスタンスと、`SKNode`をメンバーとする配列を“比較”しても、意味ありませんよね？  
配列のメンバーのどれかと、`tNode`が一致するかを調べないと、だめですよね？

[code]

    for tNode in touchNodes {
        let enemyArray = [mySprite,mySprite2,mySprite3,mySprite4,mySprite5,mySprite6,mySprite7,mySprite8]
        // タッチしたノードが敵なら消す
        // mySpriteを削除.
        if enemyArray.contains(tNode) {
            tNode.removeFromParent()
        }
        print(tNode)
    }
    
[/code]

注：  
`Array`のメソッド`contains()`は、iOS
9から有効（Available）です。Appleのドキュメントに直接あたらず、ネット上の日本語の情報だけ探していたら、見つけにくかったかもしれません。そして、iOS
8まで考慮したプロジェクトを製作しているなら、別の方法を考えなければいけません。


CC BY-SA 3.0
2015-12-12T06:50:27.087
19904
2015-12-12T06:50:27.087
7362
19903
answer