【问题标题】:Targeting all Subclasses and Sprites (cocos2d iPhone)针对所有子类和 Sprites (cocos2d iPhone)
【发布时间】:2011-03-24 03:58:19
【问题描述】:

好的,我有一个名为 Enemy 的主类,在其中我有不同敌人的子类(即 ZombieEnemy)。我需要一种方法来定位敌人的所有精灵/子类。即,对于碰撞检测,我需要一种方法来查看所有敌人是否“死”以结束关卡。

谢谢

【问题讨论】:

    标签: iphone cocos2d-iphone subclass sprite targeting


    【解决方案1】:

    有很多方法可以做到这一点。一种是向您的 Enemy 类添加一个方法,例如 -(BOOL)isEnemy,它只返回 YES。 (如果 Enemy 有一个您可以自定义的超类,例如 GameObject,这实际上会更有用。在该类中实现 -isEnemy 以返回 NO。否则,您将不知道是否可以在给定对象上调用 -isEnemy。)子类会自动继承这个方法。或者,您可以使用-isKindOfClass: 测试每个对象的类。或者,由于您是创建敌人的人,您当然可以保留所有活跃敌人的列表。如果屏幕上有很多对象,这可能是最好的计划,其中只有一些是 Enemy 对象。

    确定所有敌人何时死亡是您可能经常想做的事情。保留一个活的敌人列表可能是有意义的。当敌人死亡时,将其从列表中删除。您可以通过查看现场敌人列表的长度来快速测试玩家是否成功通关。如果它大于 0,则还有更多工作要做。

    【讨论】:

    • 在任何给定的关卡中,我在屏幕上都有几个 (2-4) 不同的敌人(仅作为示例)。我只想获取所有敌人(每种类型,每种类型都是不同的子类),并使用它们。就像我说的,我需要创建一个 if 方法来结束关卡。 (如果所有敌人都被杀死,等等等等)。当然,这就是我想用英语做的;)我想知道哪种方式最有效地基本上说“所有敌人”。谢谢
    • 哦,感谢“列表”上的信息,但从某种意义上说,我已经解决了这个问题。我有一个“allEnemiesKilled”方法。问题是我不知道如何检查所有敌人是否真的被杀死。例如,如果我想查看是否所有的 ZombieEnemy 都被杀死,如果所有 ZombieEnemy's.hp = 0, end Level,我会这样做(用英文 代码)。如果我解释得不够清楚,请告诉我,我知道我有时会感到困惑:)
    • 基本上总结一下,什么可以代替“all ZombieEnemy's”?我想将该类的所有精灵组成一个组,所以我可以调用if(allZombieEnemies.hp = 0) { //end Level }
    • 如果一个敌人没有被真正杀死,它怎么能进入 'allEnemiesKilled' 列表?一些敌人是否只能“大部分死亡”?这个游戏是基于公主新娘的吗? ;-)
    • 没有哈哈死敌=死名单。我对如何将所有 ZombieEnemy 的“缩写”为 allZombieEnemies(作为一个实例)基本上感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多