所以我有不同类型的敌人,每种都有多个敌人出现在屏幕上,我想当我触摸敌人时我会影响它的健康,例如敌人需要被触摸3次才能死亡(删除来自父母)。我的问题是我不知道检测同类敌人的最佳方法是什么。
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if let body = self.nodeAtPoint(location) as? SKSpriteNode {
if node.name == "enemy1" {
//Affect health
}
if node.name == "enemy2" {
//Affect health
}
}
}
这是我现在的代码,但你可以看到它不对,因为“enemy1”将有几个具有相同名称的节点,并且给每个节点一个特定的名称不是一种实用或有效的方式。 那么最好的方法是什么呢?
答案 0 :(得分:0)
您可以尝试制作SKSpriteNode的自定义子类,以跟踪敌人的健康状况。您的精灵文件可能如下所示:
class Enemy : SKSpriteNode {
var health = 3
}
然后你的情况可能如下:
if node.name == "enemy1" {
(node as Enemy).health--;
}
当然,我给出的示例代码过于简化,但您明白了。如果每个敌人都由它自己的类代表,那么计算机可以单独跟踪它。
答案 1 :(得分:0)
创建3个SKNodes" enemies1" " enemies2" " enemies3"它将充当父节点,并将它们添加到场景中。
然后,不是在创建场景时直接将敌人节点添加到场景中,而是将它们添加为相应父节点的子节点。
然后,对于每个敌人,你可以检查它的父母,看看它是哪种敌人。