【发布时间】:2020-08-10 03:33:36
【问题描述】:
我正在开发一款 SpriteKit 游戏,玩家从三颗心开始,当他被击中时会失去一颗心,如果他收集了一颗心形物品,他可以取回一颗心。我得到了一切工作,但当他恢复心脏时,它们会出现在最后一颗心脏周围。
// 1: here is the function for when he loses a heart
func takeDamage() {
if invulnerable || damaged { return }
lives -= 1
let lastElementIndex = heartsArray.count - 1
print(heartsArray.count)
if heartsArray.indices.contains(lastElementIndex - 1) {
let lastHeart = heartsArray[lastElementIndex]
lastHeart.removeFromParent()
print("removed heart")
heartsArray.remove(at: lastElementIndex)
}
// 2: here is the original filling of hearts
func fillHearts(count: Int) {
for index in 1...count {
let heartTexture = SKTexture(imageNamed: "heart")
let heart = SKSpriteNode(imageNamed: "heart")
heart.size = CGSize(width: heartTexture.size().width / 4, height: heartTexture.size().height / 4)
let xPosition = heart.size.width * CGFloat(index - 1)
heart.position = CGPoint(x: xPosition, y: 0)
heartsArray.append(heart)
heartContainer.addChild(heart)
}
// 3: and here is the adding + 1 heart when he gets a heart item
if refillHeart == true {
for index in 0..<1 {
let heartTexture = SKTexture(imageNamed: "heart")
let heart = SKSpriteNode(imageNamed: "heart")
heart.size = CGSize(width: heartTexture.size().width / 4, height: heartTexture.size().height / 4)
let xPosition = heart.size.width * CGFloat(index - 1)
heart.position = CGPoint(x: xPosition, y: 0)
heartsArray.append(heart)
heartContainer.addChild(heart)
print(heartsArray)
refillHeart = false
}
}
【问题讨论】:
标签: arrays swift sprite-kit