我可以显示确切的代码(不幸的是),但这里是我试图实现的事情,我只是不知道从哪里开始。跟踪X个对象之间的一个对象的变量变化
我有X数量的对象,使事情更容易我会假设其中有两个Obj5s和Obj10s。 也有对象目标。
目标具有单个属性Health = 100和存储Obj类型对象的数组。但最后一个并不重要(我认为)。
现在Obj5s和Obj10s都可以减少目标生命值(但同时可以有任意数量的对象影响目标健康)。
Obj5s减少20秒5秒。 Obj10s在10秒内减少10点。
现在这两个对象都同时贴到目标上,所以目标健康应该是: 100 - 20 - 10 = 70 它应该持续5秒。
5秒后,健康被更新。 Obj5s被删除,它回到100. Obj10s收到这个信息,它看起来像这样: 100 - 10 = 90; 再过5秒钟。 这之后,它会回到100
类是pesudocode
class Target
{
float Health;
Array<Obj*> AffectingObjs;
}
class Obj
{
float Damage;
float Duration;
}
class Obj5s : Obj /it sets values
{
Damage = 20;
Duration = 5;
}
代码在游戏循环实际运行。
现在我的问题是,我该如何让Obj5s和Obj10s以及任何其他ObjX知道健康变化?
健康值应该在每次更改为Obj时被推送,它们应该相应更新?还是应该两个objs不断查询值以检查它是否更改?
我已经尽早实施了最后一种方法,但它并没有像我期望的那样真正起作用。因为在每次查询后,数值也被更新了,所以我得到如下行为: 100 - 10 = 90; 90 - 10 = 80; 80 - 10 = 70; 等 重点是值应该在每个Obj上设置一次,并且只有在其他Obj修改时才会更改。
任何指向正确的方向从哪里开始寻找适当的解决方案,将不胜感激!
谢谢。事实上,它现在以这种方式工作,但它不够准确。如果其中两个同时应用,但持续时间不同,则持续时间较长的将使用不再为真的信息(健康不再由原来的值修改-20,因为那样做的对象,不是更长的时间存在),但第二个对象没有意识到这一点,并仍然使用它在创建时获取的值。 –
并感谢您给小费。现在有点补丁工作,但现在我已经开始工作了。 –