添加 SpriteNodes 并根据时间删除或使用 SpriteKit 单击

Add SpriteNodes and Remove Based on Time or click using SpriteKit

我是 swift 的新手,希望构建我的第一款基础游戏。我想到的游戏涉及精灵随机生成,然后根据时间或点击消失,如果点击在分配的时间内。到目前为止,我已经创建了基本框架,并且还在搞设计。我的问题出在我似乎无法根据时间删除精灵(它生成很好)。感谢任何帮助,并提前致谢

下面是我目前搭建的框架。

 import SpriteKit

var one = SKSpriteNode()

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */       

        let myFunction = SKAction.runBlock({()in self.addOne()})
        let wait = SKAction.waitForDuration(5)
        let remove = SKAction.runBlock({() in self.removeOne()})

        self.runAction(SKAction.sequence([myFunction, wait, remove]))


    }

    func addOne() {

        let oneTexture = SKTexture(imageNamed: "blue button 10.png")

        let one = SKSpriteNode(texture: oneTexture)

        one.position = CGPoint(x: CGRectGetMidX(self.frame) - 100, y: CGRectGetMidY(self.frame) + 250)
        one.zPosition = 1

        self.addChild(one)


    }

    func removeOne() {

        one.removeFromParent()

    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */

    }

    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */

    }
}

它不会消失,因为你创建了一个新的 SpiteNode,但是尝试删除旧的,这样做:

    var one : SKSpriteNode! //instead of creating it without data, just define the type(not necessary, but I would do it)

    class GameScene: SKScene {
        override func didMoveToView(view: SKView) {
            /* Setup your scene here */

            let myFunction = SKAction.runBlock({()in self.addOne()})
            let wait = SKAction.waitForDuration(5)
            let remove = SKAction.runBlock({() in self.removeOne()})

            self.runAction(SKAction.sequence([myFunction, wait, remove]))


        }

        func addOne() {

            let oneTexture = SKTexture(imageNamed: "blue button 10.png")

            one = SKSpriteNode(texture: oneTexture) //removed the let, so you dont create a new "one"

            one.position = CGPoint(x: CGRectGetMidX(self.frame) - 100, y: CGRectGetMidY(self.frame) + 250)
            one.zPosition = 1

            self.addChild(one)


        }

        func removeOne() {

            one.removeFromParent()

        }
}