游戏开发论坛

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

[原创] 由浅入深谈动作手游(三):连招系统浅析

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2019-1-2 10:13:47 | 显示全部楼层 |阅读模式
1.gif

文/无良印品

前文回顾:
谈动作手游(1):偏离设计目的,有再好的动作设计师也会变成“安魂曲”

谈动作手游(2)——操作反馈与硬直设计

所谓连招是动作游戏系统中最基础的部分,作为设计者,和你的程序队友阐释这个系统十分重要(除非你同时是程序);至于什么程序需要纠结的结构关系,什么运算优先,什么嵌套···只需你自己的思路清晰,懂的程序的工作方式就可以了。

在开始之前声明一点,这些大部分都是有经过验证的系统,我用的便是我写的,还有部分未验证的,因此这些都是个人经验,没有经过验证的我最后会指出来。

将玩家输入命令统称为:“按键”

至于下面的动图都是自己闲时绘制的,方便大家理解我所讲的内容,那么废话不多说,开始吧。

攻击的组成:

曾经介绍过我们普攻连击的制作方式,不过却不完整,在这里我会更加详细的解释一下攻击动作和受击动作的组成。

所有的攻击动作都由atk和atkidle组成。atk是攻击动作的表现,atkidle是攻击的收招的表现。

可以理解atk动作即主动硬直动作,atkidle动作仅为表演动作,是最底级的动作命令,如果有下一个atk动作命令即可随意替代该命令。

这两个表现最好通过命名和制作上分开,方便后面的使用。

2.gif
这里其实包含了两个动作

atk连招的触发机制:

简单连招判断:

所谓连招在机制上最粗浅的理解,就是atk1衔接atk2衔接atk3……以此类推。
这需要一个很简单的判断,比如:atk1动作播放期间按键时间<=0.3,atk1动作完成后则衔接a2,否则播放atkidle1的动作;期间按键仅记录一次;当atk前缀命名的动作全部跑完则重新循环,称之为loop。

以上这个判断效果完成,操作效果如下:按住攻击键不放,或者<=0.3秒的连续按键,都能触发无限连续loop。但是这样的情况,是不可能有atk的蓄力效果的,同时也是不可能做间隔连招的效果的。

3.gif
这里包含三个动作,组合成了简单的连招,注意atk1是一样的

如果想做蓄力,请务必加上一个判断,如:atk按键时间>0.3秒未松开的,则终止接下来atk前缀的动作衔接,停止按键将清空atk操作命令,否则继续上一个判断(简单连招);前提保证你的动作不会少于0.3秒。但是会和间隔连招起冲突。

如果想做间隔连招,请务必在蓄力的判断上再做修改,如:atk按键时间>0.3秒未松开的,则终止接下来atk前缀的动作衔接,停止按键将清空atk操作命令,否则同时继续简单连招和间隔连招的判断;

蓄力:

机制上的理解为,满足判断条件后,保持charge前缀的动作,命令终止则播放指定chargeAtk前缀的动作。

需要和上述简单连招做出区分,于是必须要增加判断条件。

如:atk前缀动作的任何情况下,atk按键时间>=0.7秒未松开,则视为蓄力,否则播放对应动作的atkidle;charge动作命令高于atk动作命令;满足条件期间任何时候松开按键,都会释放指定动作。

以上判断完成效果如下:按下atk键不松,首先会播放一次atk1,然后会出现蓄力动作chagre(你的atk动作低于0.7秒有可能会出现atkidle),然后你任何时候松手将会释放chagreAtk动作。

当然,还可以有一些更高级的判断,但应该不用再继续说了。

4.gif
蓄力动作,绝不仅仅是只有atk1才能衔接,仅举例使用了atk1

间隔连击:

机制上理解为,在“特定”的atk连击结束时,在“规定”时间内按键,进入另一组连击动作的判断;为严格区分“简单连招”,“规定”时间必须长。

其实仅仅是在else的判断下做了一个并列的选项。

如:

atk按键时间>0.3秒未松开的,则终止接下来atk前缀的动作衔接,停止按键将清空atk操作命令(播放对应atkidle),否则同时继续简单连招和间隔连招的判断;
          判断:再次按键间隔时间<=0.3s,则释放atk简单连击;
                0.3s<再次按键间隔时间<=0.9s,则释放atk间隔连击;
否则,播放对应atkidle。
前提,你的动作时间满足以上的释放条件。

5.gif
请注意atk2放着不按之后的“间隔”效果,以及触发之后的动作

动作打断

对于连招而言动作打断十分重要,你的哪些动作层级高于哪些动作,因此在你释放连击的时候会有更加流畅的表现。

如:atk间隔连击,a1→a2→间隔0.3-0.9S→a9→a10;

a2的层级低于a6,当间隔连击成立的时候,a6将会替换a2;a2的动作不用等到结束就能接上a6动作。

还有更常使用的,如闪避动作高于所有atk动作,或者高于部分atk动作;爆气动作高于hurt动作高于任何atk动作;命令的层级既可以让动作上衔接更加流畅,也可以让动作游戏的表现更加流畅,操作更加顺滑。

例如:玩家被怪物连续硬直到了,一直播放hurt动作无法响应按键操作,这时可以通过爆气来解决眼前的危机。

总之,这是一个容易理解,收益又很高的操作,制作的时候记住一定不要忽略。

了解动作游戏的受伤表现

Hurt:

受到硬直伤害之后,才会播放的动作,而不是只要受伤就会播放这个动作,hurt的优先级高于玩家的操作优先级,也就是说你在操作的时候一旦被硬直就会被打断并播放hurt动作。

当你已经可以用你的连招攻击敌人了,这时候受到硬直的敌人需要播放hurt动作,那么,敌人的hurt动作是否只有一种呢?不可能的,有一些人物招式动作幅度很大,因此怪物不适合小幅度的hurt动作,那么就需要另一个被击倒或击飞的hurt动作。(这里先打破一些外行人的幻想,他们幻想所有的受伤动作都是因为物理碰撞而随机表现的,而且还解释不清,这样的天才请你移步吧,后面的你也不用看了)

因此,怎样保证你的攻击动作和受击动作保持一致性?即你前推-怪物就后仰,你砸地-怪物就倒地,你抓取-怪物就前倾。做到如此步调一致的方法其实很简单,即“伤害帧”配置一个指定怪物hurt动作的字段,当怪物受到硬直就播放指定的动作。

每个角色必须自带一套完整的受击动作,什么?嫌难做?那没办法。

Hurt的播放顺序:

假设玩家有一套技能可以在一秒内连续打5下,我们需要怎样表现,是否如同街机游戏一般及时响应?或者在当前hurt动作没有表现完成之前,不播放下一个hurt动作?

这个全部看你自己是想要什么样子的效果,和什么样子的硬直系统,过程中你可以多多尝试。硬直系统怎么和hurt有关?有一些项目会配置一个叫做硬直时间的参数控制,即你的受击动作不仅仅是hurt动作表现,还要受到一个叫做硬直时间的东西影响。

你可以理解为,hurt动作时间+硬直时间=准确的受击硬直时间。所以受击表现应项目而异。

下次我们从哪里开始

从硬直系统开始,嗯嗯,上面的东西应该还比较好懂,这次就讲到这里,再深入的需要理解硬直和动作游戏的更高级设计表现,所以下次我们讲硬直。硬直系统其实更多的是一种观念和深度理解,确切的关系到动作表现。

我相信,在经过下一次详细的梳理之后,绝大部分人能够脱离动作做的好看却不实用的怪圈,到底怎么实用可不单是连招系统能解决的问题。下次再见。

7

主题

448

帖子

781

积分

高级会员

Rank: 4

积分
781
发表于 2019-1-6 19:50:28 | 显示全部楼层
动作 设计不知道 容易不容易
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-23 15:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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