这可能是一个非常基本的问题。我很快乐,我已经阅读了几本书,现在我正在努力学习。我正在制作一个游戏,僵尸会不断地随机产生,玩家的汽车会越过它们直到它们死亡。问题是所有僵尸子节点似乎共享相同的健康状况,我不知道如何纠正它。
我的僵尸类初始化为20点生命值,如下所示:
class Zombie: SKSpriteNode, GameSprite {
var initialSize:CGSize = CGSize(width: 30, height: 54)
var textureAtlas:SKTextureAtlas = SKTextureAtlas(named: "Zombies")
var health:Int = 20
当被击中时,僵尸在每次碰撞中受到4点伤害,直到它们死亡:
func takeDamage() {
self.health -= 4
print("zombie has", health, "health")
if self.health == 0 {
die()
}
}
它适用于第一个僵尸并且健康减少五次并且它会死亡,但是当第二个僵尸产生时健康保持在0,并且随着汽车继续与它们碰撞,每个僵尸继续减少负面。当然,没有一个僵尸在第一次死亡后死亡,因为健康状况已经不到零。我理解为什么会发生这种情况,但我不确定如何为每个产卵重置20的健康状况并给每个僵尸独立的健康值。我尝试在我的spawn函数中手动设置运行状况变量,但它似乎没有做任何事情。
func spawnEnemy(){
let enemiesToSpawn = arc4random_uniform(11) + 1
var enemiesSpawned = UInt32(0)
while enemiesSpawned < enemiesToSpawn {
var spawnLocationX = player.position.x + CGFloat(arc4random_uniform(200)) + 900
var spawnLocationY = CGFloat(arc4random_uniform(415)) - 240
let zombie = Zombie()
zombie.position = CGPoint(x: spawnLocationX, y: spawnLocationY)
zombie.zPosition = 1
zombie.position.x += 33
zombie.health = 20
self.addChild(zombie)
enemiesSpawned += 1
}
}