SKSpriteNode宽度随着变量而增加但不会减少?

时间:2017-02-21 00:13:00

标签: ios swift sprite-kit progress

我已将SKSpriteNode设置为进度/健康栏。 宽度设置为变量。 这个变量随着计时器而减少,但节点的宽度不随之减小? 如果我将变量设置为增加,则节点宽度增加没有问题,但是如果我将变量设置为减少则不起作用。 我担心我在这里犯了一个简单的错误。 这是可行的代码,但如果我将+ =更改为 - =

,则无效
5px

1 个答案:

答案 0 :(得分:2)

每次更新都要添加新的精灵而不删除旧精灵。一段时间后,你会有许多精灵。新的精灵会更短,但旧的精灵仍在显示,所以标准不会变短。

class GameScene: SKScene, SKPhysicsContactDelegate {

    var health: SKSpriteNode?
    var healthTimer = Timer()
    var progressValue = 350

    func startHealthTimer() {
        progressValue += 20
    }

    override func didMove(to view: SKView) {
        healthTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.startHealthTimer), userInfo: nil, repeats: true)
    }

    override func update(_ currentTime: TimeInterval) {
        if let health = self.health {
            health.removeFromParent()
        }

        let healthTexture = SKTexture(imageNamed: "health.png")
        self.health = SKSpriteNode(color: .white, size: CGSize(width: progressValue, height: 30))
        self.health.position = CGPoint(x: -self.frame.width / 2 + healthTexture.size().width / 2, y: self.frame.height / 2)
        self.health.zPosition = 2
        self.addChild(self.health)
    }
}