假如游戏中有一个玩家,生命值为139。
现在他手里有一把武器,武器除了有攻击力外,还有一个特殊的技能,增加玩家10%的HP上限。
也就是说玩家拿着这把武器的时候,生命值应该是139×1.1=152.9,取下武器的时候,生命值又应该恢复到139。
但是由于生命值一般都是整数,所以拿着武器HP应该是152,如果取下武器的时候152÷1.1=138.18,取整数为138,这样就不是原来的139了,因为精度丢失了。
目前我的解决办法是:武器也有一个生命值,生命值为0,技能如果是增加玩家10%的HP上限的话,那么武器的生命值应该是0+玩家生命值×0.1,也就是0+139×0.1=13(取整数)
玩家总生命值应该是139+13=152。
当玩家取下武器,或者换别的没有特殊技能的武器,就算加上武器的生命值,也是139+0,还是139。
这样就解决计算精度丢失的问题,但这就造成数值太分散,假如玩家有魔法值这个属性,武器也得增加一个魔法值,玩家有防御力,武器也要增加防御力这个属性
也就是:
玩家HP=自身HP+武器HP+装备HP+其他装备HP
玩家MP=自身MP+武器MP+装备MP+其他装备MP
玩家XXX=自身XXX+武器XXX+装备XXX+其他装备XXX
感觉这样设计不是很好,请问有别的比较好的方法解决这种技能加成的问题吗?