SKSpriteNode 宽度随变量增加但不会减少?
SKSpriteNode width increases with variable but won't decrease?
我已经将 SKSpriteNode 设置为 progress/health 栏。
宽度设置为变量。
这个变量随着计时器的增加而减少,但是节点的宽度并没有随之减少?
如果我将变量设置为增加,则节点宽度增加没有问题,但是如果我将变量设置为减少,则节点宽度增加则不起作用。
我担心我在这里犯了一个简单的错误。
这是有效的代码,但如果我将 += 更改为 -=
则不起作用
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)
}
每次更新您都会添加一个新精灵,而不会删除旧精灵。一段时间后,您会看到许多精灵相互叠加。新精灵会更短,但旧精灵仍在显示,所以条形图不会变短。
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)
}
}
我已经将 SKSpriteNode 设置为 progress/health 栏。 宽度设置为变量。 这个变量随着计时器的增加而减少,但是节点的宽度并没有随之减少? 如果我将变量设置为增加,则节点宽度增加没有问题,但是如果我将变量设置为减少,则节点宽度增加则不起作用。 我担心我在这里犯了一个简单的错误。 这是有效的代码,但如果我将 += 更改为 -=
则不起作用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)
}
每次更新您都会添加一个新精灵,而不会删除旧精灵。一段时间后,您会看到许多精灵相互叠加。新精灵会更短,但旧精灵仍在显示,所以条形图不会变短。
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)
}
}