如何让同一类的敌人“分享”健康?

时间:2017-06-22 03:12:07

标签: ios swift xcode

这可能是一个非常基本的问题。我很快乐,我已经阅读了几本书,现在我正在努力学习。我正在制作一个游戏,僵尸会不断地随机产生,玩家的汽车会越过它们直到它们死亡。问题是所有僵尸子节点似乎共享相同的健康状况,我不知道如何纠正它。

我的僵尸类初始化为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

    }

}

0 个答案:

没有答案
相关问题