本帖最后由 未命名 于 2015-7-23 10:52 编辑 唉,两个self.damage 最后都用=赋值了,所以显示出来的伤害会是最后一个=的数值。 现在的结果是你人物实际-28HP 没错-28。 因为self.hp在过程中被实际减掉了。 然后按默认脚本,最后再扣掉self.damage,一共是28。 你先把self.damage = 改为 self.damage +=,然后最后得到的self.damage就是两个状态合计伤害,然后系统再显示它,再扣掉HP。 另外再把self.hp - self.damage删掉,要不然会扣掉比显示更多的伤害。 当然,你甚至可以制作徐徐回复状态,只要把self.damage变成负值就可以了。 对了,还要在开头就写上self.damage = 0,以免各个伤害叠加等BUG。 ———————————————————————————————————————————————————————— (=゚ω゚)=显示伤害是之后执行的,它会把self.damage的值可视化。 但是在此之前……它会先得出damage的值,然后减掉hp,再显示出来。 你的脚本中,第一次 self.damage = 8, 然后self.hp-self.damage,人物自己已经扣血。 但是这个时候self.damage还是个值,人家还没显示出来( ´_ゝ`)。 然后第二个状态, self.damage = 10,所以就无法挣扎的=10了 (゚Д゚≡゚Д゚)! 然而self.hp-self.damage人物还是扣了HP。 (つд⊂) 最后,到了执行伤害显示的时候,它们打上了damage_pop,但是self.damage还是10。 |д` ) 然后显示了10。 但是人物已经扣了18HP了。 (先前我还以为你在最后没有删掉原来的self.hp-self.damage,所以我以为是28。) ( ´_っ`) ——————————————————————————————————————————————— 不知道清楚了没有…… 所以解决方法像这样: # 设置伤害 self.damage = 0 #一开始先归零。 if self.state?(17) self.damage -= 200 #这个是回血状态,减法。 end if self.state?(23) self.damage += 100 #损血就用加法。 end if self.state?(24) self.damage += 250 end #如果角色中了以上三个状态,那么他就得到self.damage = 150的值。 # HP 的伤害减法运算 self.hp -= self.damage #然后再扣掉。 # 过程结束 return true #这里结束之后,才转到伤害显示的脚本,把得出的damage显示出来。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-9-23 05:30
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.