我正在用 ActionScript 编写一个游戏,其中我有多个应该被击球“击中”的类。
所有其他游戏内实体继承的最通用的类是 CombatObject;CombatShip、CombatAsteroid 和其他各种类都继承自它。CombatAi 和 CombatPlayer 类都继承自 CombatShip。
现在我想让 CombatAi、CombatPlayer 和 CombatAsteroid 可以被击中,但我不希望它们继承它(以后可能会有不应该被击中的 CombatShips)。
我现在的想法是让这三个实现一个接口,IHitable,这样当它们与一个镜头发生碰撞时,我可以询问if(hitObject is IHitable)
,如果是真的,让这个镜头被摧毁并造成伤害。
现在的问题是,最好有这些课程中的每一个
- 自己实现所有需要的代码来承受伤害(例如检查护盾、计算伤害百分比等)
- 让他们都拥有该类的一个实例
DamageManager
并实现一个函数getDamageManager():DamageManager
,该函数返回一个处理所有与损坏相关的功能的类 - (2.) 的一个缺点是每个 CombatShip、CombatAsteroid 等都必须拥有一个 DamageManager 实例。让 DamageManager 成为 Singleton 并且只引用船和给它的镜头并让它处理其余部分可能会更好吗?