魔兽地图编辑器吧 关注:65,780贴子:3,846,933
  • 3回复贴,共1

关于模拟叠加持续时间的持续伤害的算法

只看楼主收藏回复

类似魔兽自带毒球
首先需要的两个参数为技能持续时间和毒伤害的间隔时间
普通的运行计时器肯定是不行的
一般普通的持续伤害算法无非以下两种:
1.运行计时器1秒,然后每秒给伤害
2.先给一次伤害,然后运行计时器1秒每秒给伤害
这种方法在面对毒刷新较快的时候就不对了
比如伤害间隔1秒 单位攻击间隔小于1时 一直打一个目标就会造成:
1.一直打就没有毒伤害了
2.每次攻击都有一次额外毒伤害
所以这里需要采取一种特殊的算法
1.当单位没有buff时 开启计时器循环伤害(这里可以通过判断有无对应计时器来检测)
2.当单位有buff时,仅增加buff持续时间
3.计时器循环到单位没有buff时 自我销毁
这样一来就可以比较完美的叠加毒的持续时间 而不至于造成以上不合理的现象
使用注意:
1.建议持续时间设置成毒伤害间隔时间的倍数+0.5倍毒伤害间隔时间(为什么?自己思考)
2.建议将毒伤害的计时器与buff的计时器分开(当模拟buff时)


1楼2014-11-25 10:23回复
    我做的话,我大概会用马甲做的吧:
    创建一个马甲,单位数组索引绑定为被攻击目标,然后让该马甲射一发间隔性伤害技能过去,当接受到马甲伤害就给于马甲生命值的百分比伤害——用该马甲的生命值作为伤害池来使用---当需要叠加伤害时,就增加马甲生命值
    不出意外的话,能在十句内解决


    IP属地:中国台湾2楼2014-11-25 11:27
    回复
      2026-04-28 21:57:58
      广告
      不感兴趣
      开通SVIP免广告
      不用即可~


      IP属地:浙江来自手机贴吧3楼2014-11-25 12:18
      回复
        好吧请无视楼上
        我是用自定义值的加减来决定时间的~


        IP属地:浙江来自手机贴吧4楼2014-11-25 12:40
        回复