实例解析:动作游戏攻击持续帧判定的防重复处理解决思路

来源:GameRes游资网 发布时间: 2016-05-06 17:45:59

  在动作游戏或是格斗游戏中,若有多个角色同时作出攻击,可能会出现攻击帧在命中对象后在接下来剩余的时间内出现重复的受创判定。

  在处理攻击结果时把攻击判定与攻击数据分开处理,而两套逻辑共用一个动画时间线。这样就能解决重复的受创判定的问题。

  例如

实例解析:动作游戏攻击持续帧判定的防重复处理解决思路 ...



  上部为人物动画及其攻击判定框,下方为整个动画的时间轴。

  因为攻击判定都是与动画强相关的,所以一般动画+判定框都是直接做在相应的动画编辑工具中。我用过自己公司开发的工具也用过spine,这一步都是一样。

  若在各角色攻击中加入持续伤害攻击技能,这时候需要让同一个框来达到不同的攻击效果。

实例解析:动作游戏攻击持续帧判定的防重复处理解决思路 ...



  解决的办法就是与动画时间轴同步,在时间轴上添加攻击数据。如上图中的黄框内容。

  攻击数据主要作用就是明确攻击判定会使用到哪些数据,以此来决定攻击的效果,包括判定的切换时间等。

  至于怎么实现就看所用的工具了,以前公司提供过一个独立工具专门在动画时间轴上编辑攻击数据,spine的话可以直接定义好event打在动画里,然后在引擎里解析为对应数据。

  于是:攻击判定+攻击数据结合,共同作用成为一个攻击事件。

  而同一个目标只能被一个攻击事件命中一次。

  就像上图,4~16帧为攻击判定,4~7、8~11、12~16分别对应了3条攻击数据,结合起来也就是有3次攻击事件。

  当敌人在4帧被攻击事件1击中后,5、6、7帧都处于同一事件的判定下,不会被重复击中;而8帧的时候切换为攻击事件2,如果此时敌人还在攻击判定覆盖下,则会被事件2击中。以此类推直到事件结束。

  另外这是普通攻击的情况。飞行道具的话会稍微有点特殊。

  一般飞行道具的生命周期会比动画持续时间长,比如动画10帧,而可能从发出到消失的时间超过100帧。如果不是一旦命中立即消失类的,可能出现虽然只在它的动画中定义了一次攻击事件,但在穿过敌人的过程中依然出现了多次判定的情况,因为一般动画刷新的话攻击事件也就重置了。

  这种情况一般都会给飞行道具设定一个穿透值来控制,比如隆的波动拳命中之后立刻消失于是不会有任何问题。而真空波动拳则可以在命中后造成5次伤害之后才消失,就是靠穿透值来控制飞行道具攻击次数的。这个嘛就根据游戏的具体需求来设计了。


扫描左侧二维码,关注微信公众号

即可获得游戏智库每日精彩内容推送,并且在第一时间获取游戏行业新鲜资讯。

APP 下载

扫描二维码
下载iOS或安卓APP
返回顶部