撰写了文章 发布于 2018-09-11 17:24:04
动作游戏-连招系统(浅析)
所谓连招是动作游戏系统中最基础的部分,作为设计者,和你的程序队友阐释这个系统十分重要(除非你同时是程序);至于什么程序需要纠结的结构关系,什么运算优先,什么嵌套···只需你自己的思路清晰,懂的程序的工作方式就可以了。
在开始之前声明一点,这些大部分都是有经过验证的系统,我用的便是我写的,还有部分未验证的,因此这些都是个人经验,没有经过验证的我最后会指出来。
将玩家输入命令统称为:“按键”
至于下面的动图都是自己闲时绘制的,方便大家理解我所讲的内容,那么废话不多说,开始吧。
攻击的组成:
曾经介绍过我们普攻连击的制作方式,不过却不完整,在这里我会更加详细的解释一下攻击动作和受击动作的组成。
所有的攻击动作都由atk和atkidle组成。atk是攻击动作的表现,atkidle是攻击的收招的表现。
可以理解atk动作即主动硬直动作,atkidle动作仅为表演动作,是最底级的动作命令,如果有下一个atk动作命令即可随意替代该命令。
这两个表现最好通过命名和制作上分开,方便后面的使用。
这里其实包含了两个动作
atk连招的触发机制:
简单连招判断:
所谓连招在机制上最粗浅的理解,就是atk1衔接atk2衔接atk3……以此类推。
这需要一个很简单的判断,比如:atk1动作播放期间按键时间<=0.3,atk1动作完成后则衔接a2,否则播放atkidle1的动作;期间按键仅记录一次;当atk前缀命名的动作全部跑完则重新循环,称之为loop。
以上这个判断效果完成,操作效果如下:按住攻击键不放,或者<=0.3秒的连续按键,都能触发无限连续loop。但是这样的情况,是不可能有atk的蓄力效果的,同时也是不可能做间隔连招的效果的。
这里包含三个动作,组合成了简单的连招,注意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动作。
当然,还可以有一些更高级的判断,但应该不用再继续说了。
蓄力动作,绝不仅仅是只有atk1才能衔接,仅举例使用了atk1
间隔连击:
机制上理解为,在“特定”的atk连击结束时,在“规定”时间内按键,进入另一组连击动作的判断;为严格区分“简单连招”,“规定”时间必须长。
其实仅仅是在else的判断下做了一个并列的选项。
如:atk按键时间>0.3秒未松开的,则终止接下来atk前缀的动作衔接,停止按键将清空atk操作命令(播放对应atkidle),否则同时继续简单连招和间隔连招的判断;
判断:再次按键间隔时间<=0.3s,则释放atk简单连击;
0.3s<再次按键间隔时间<=0.9s,则释放atk间隔连击;
否则,播放对应atkidle。
前提,你的动作时间满足以上的释放条件。
请注意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动作时间+硬直时间=准确的受击硬直时间。所以受击表现应项目而异。
下次我们从哪里开始
从硬直系统开始,嗯嗯,上面的东西应该还比较好懂,这次就讲到这里,再深入的需要理解硬直和动作游戏的更高级设计表现,所以下次我们讲硬直。硬直系统其实更多的是一种观念和深度理解,确切的关系到动作表现。
我相信,在经过下一次详细的梳理之后,绝大部分人能够脱离动作做的好看却不实用的怪圈,到底怎么实用可不单是连招系统能解决的问题。下次再见。
目录
avatar_red 1年前
发布
无良印品 [作者] 1年前
发布
世俗骑士 1年前
发布
鸟别 1年前
发布
音之幻风 1年前
林荫 1年前
发布
大Ship 1年前
发布
Charlie 1年前
发布
Reguluz 1年前
发布
白人猫 1年前
发布
揍敌客丶乐乐 1年前
发布
兮罗君 1年前
发布
からくりピエロ 1年前
发布
黑白色的枫 1年前
学习了
发布
Sloaix 1年前
发布
一块老鸡排 1年前
发布