针对所有子类和精灵 (cocos2d iPhone)

发布于 2024-10-25 18:35:59 字数 121 浏览 5 评论 0原文

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

谢谢

Ok, I have this main class called Enemy, and inside it I have subclasses of different enemies (ie ZombieEnemy). I need a way to target all sprites/subclasses of Enemy. Ie, for collision detection, I need a way to see if ALL Enemy's are 'dead' to end the Level.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

裂开嘴轻声笑有多痛 2024-11-01 18:35:59

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

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

There are plenty of ways to do this. One is to add a method to your Enemy class like -(BOOL)isEnemy that simply returns YES. (That'd actually be more useful if Enemy has a superclass that you can customize, like GameObject. Implement -isEnemy in that class to return NO. Otherwise, you won't know if you can call -isEnemy on a given object.) Subclasses will automatically inherit this method. Alternately, you could test the class of each object using -isKindOfClass:. Or, since you're the one creating enemies, you could certainly keep a list of all active enemies. This is probably the best plan if you have lots of objects on the screen, only some of which are Enemy objects.

Deciding when all enemies are dead is something you probably want to do very often. It might make sense to keep a list of live enemies. When an enemy dies, remove it from the list. You can quickly test whether the player has successfully cleared the level by checking the length of the live enemies list. If it's greater than 0, there's more work to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文