好的,我有一个名为Enemy的主要类,在其中我有不同敌人的子类(即ZombieEnemy)。我需要一种方法来定位敌人的所有精灵/子类。即,对于碰撞检测,我需要一种方法来查看所有敌人是否已“死”以结束等级。
由于
答案 0 :(得分:1)
有很多方法可以做到这一点。一种方法是向您的Enemy类添加一个方法,如-(BOOL)isEnemy
,只返回YES。 (如果Enemy有一个你可以自定义的超类,比如GameObject,那实际上会更有用。在该类中实现-isEnemy返回NO。否则,你不会知道你是否可以在给定对象上调用-isEnemy。)子类将自动继承此方法。或者,您可以使用-isKindOfClass:
测试每个对象的类。或者,既然你是创造敌人的人,你当然可以列出所有活跃的敌人。如果屏幕上有很多对象,其中只有一些是Enemy对象,这可能是最好的计划。
决定所有敌人何时死亡是你可能经常想做的事情。保留一个活的敌人列表可能是有意义的。敌人死亡时,将其从列表中删除。您可以通过检查实时敌人列表的长度来快速测试玩家是否已成功清除等级。如果它大于0,还有更多工作要做。