游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7587|回复: 1

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

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-5-5 18:02:36 | 显示全部楼层 |阅读模式
QQ截图20160505175835.jpg

  GameRes游资网授权发布 文 / 白井功名

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

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

  例如

1.png

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

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

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

2.png

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

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

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

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

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

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

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

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

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

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

  相关阅读方块的战争:浅谈格斗游戏的攻击判定方法


0

主题

36

帖子

536

积分

高级会员

Rank: 4

积分
536
QQ
发表于 2016-5-7 11:21:08 | 显示全部楼层
总算看见一篇像样的文章了,顺便补一句,飞行道具如果穿透值(生命值)定义为5,与穿透值为1的飞行道具碰撞,则会减掉1格穿透值,如果此飞行道具记住目标后会变为4次伤害。

还有一个重要的一点要提一下,穿透值如果为多次,那么其中的触发间隔也会不同,如果穿透值为5,触发间隔为3F的飞行道具与一个触发间隔为1F的飞行道具碰撞,则会优先后者

关于飞行道具动画时长的问题,我认为说的不对,举个例子,龙的波动拳,不存在什么10帧100帧的问题,这是动画的拆分的问题,基本分为3部分:
1、飞行道具生成动画,一般会与人物释放动作做配合出现。(动画只单次播放)
2、飞行道具飞行过程动画,这个过程是无限循环动画,消失条件是飞出屏幕一定距离,或击中阻挡目标。(动画循环播放)
3、飞行道具爆炸过程动画,如果击中阻挡目标会播放该动画。(动画只单次播放)
另外有些特殊飞行道具还会出现第4种:
4、飞行道具消失动画:例如春丽的飞行道具,如果飞行过程中没有阻挡物,则会到达指定地点播放消失动画。(动画只单次播放)

这是美术要给出几个基本动画资源,策划要做的是把飞行道具的判定放在第2个动画(循环动画)中,所以楼主说的是绝对不对的,顺便说一句,动画会不会拆分可是做动作格斗游戏的基本功啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-21 19:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表