Я установил SKSpriteNode как индикатор прогресса/работоспособности. Ширина установлена на переменную. Эта переменная уменьшается с помощью таймера, но ширина узла не уменьшается вместе с ним? Если я устанавливаю переменную для увеличения, то ширина узла не вызывает проблем, однако не работает, если я устанавливаю переменную для уменьшения. Я боюсь, что здесь я делаю простую ошибку. Вот код, который работает, но не работает, если я изменю + = к - =Ширина SKSpriteNode увеличивается с переменной, но не уменьшается?
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) {
let healthTexture = SKTexture(imageNamed: "health.png")
health = SKSpriteNode(color: .white, size: CGSize(width: progressValue, height: 30))
health.position = CGPoint(x: -self.frame.width/2 + healthTexture.size().width/2, y: self.frame.height/2)
health.zPosition = 2
self.addChild(health)
}
Я понимаю. Как я могу удалить каждый спрайт на место для нового? –
Вызов 'removeFromParent' на старый. –
Отлично, что делает работу! Есть ли способ уменьшить ширину полосы с правого края, а не на равном расстоянии от края узла? –