level 9
本贴谢绝转载。
首先说一下格斗游戏的技能系统,连系统都不清楚就做的人,多半是浪费很多时间最后还是做得乱七八糟。
格斗游戏基本招式系统分为:
移动技能,受创技能,防御技能,攻击技能,破防御技能(也可以说是投掷技能)。
既然要制作技能,想要做得又快又好,就需要对这些技能的特点和制作要点有个清晰的认识:
1--移动技能在2dfm中大部分都是默认存在的,它们有自己的默认内核程序支配(当然如果你用2dfm够熟练,完全可以自己再仿制一套,此乃后话)。
移动技能的特征是:可以随时被其它技能抵消掉,例如你在行进中随时可以出拳或者防御,也可以随时挨打,显然行进技能可以随时被抵消掉。了解这一点,你就可以在很多情况下合理利用这个特点:
例如你想要制作类似街霸3的Blocking(格挡)功能,只要给你的角色的前进技能最初一图添加一个0伤害攻击区域,该区域打中对手不会导致对手受伤反应,但是一旦敌人的攻击区域和这个区域碰触,就会触发“攻击相抵”脚本,产生格挡效果,而你只需要将前进技能最末尾添加一个跳转,跳转到前进技能的第二图,就能保证当玩家只能在第一下按下“前”的瞬间能激发Blocking状态,而玩家如果B空(就是前进瞬间没有格挡到敌人的攻击)后按住“前”的时候,不会再触发Blocking状态。要想要连续处于B的状态,玩家需要连续按“前”,而你同时可以制作另一个前冲技能,在快速输入两次“前”命令时触发前冲,就可以有效防止玩家利用“前”连发来作弊无限格挡了。
2009年11月02日 19点11分
2
level 9
上面的例子其实利用的是其它任何技能都能抵消“前进技能”的默认设置,从而利用前冲技能抵消前进技能避免无限格挡。
下面的例子是在跳跃技能中你应该注意的:
跳跃攻击通常都需要随着跳跃的抛物线运动,所以你添加移动脚本的时候要记得设置坐标移动为“相加”且参数各项为0,这样,跳跃攻击技能出招过程中,角色依然会随着跳跃技能的抛物线运动。这很重要。
另外,如果你想要设置一个技能出招瞬间在空中暂停一下(例如豪鬼的斩空波动拳),那就要设置一个“特效脚本”让本方角色暂停一下,然后他还会沿着原来的抛物线运动。
但如果你要角色不仅出招时候要在空中停顿,还要改变前进路线(例如Ryu,Ken,Gouki的翔空旋风脚),那就需要让坐标移动为“相加”时的参数不全为零,有一些速度或加速度来改变原来轨迹,但要记住既然你选择了“相加”,那么这时候的运动改变都是在原来基础上的(例如翔空旋风脚有个加速横移,是在原来跳跃基础上加速横移的),如果你非要彻底改变原来的跳跃路线(例如你要制作Dhalsim的空中降落铁头功),那就要记得把坐标移动的“相加”改为“代入”,然后设置新的移动路线数值。
这些东西其实才是制作移动技能的关键。
又比如你的角色如果在空中出招后仍然停在空中,不用担心,系统会自动转到“空中下落”技能,所以千万记得要制作空中下落技能(也就是空中下落技能不要留空白,既然是默认技能,就应该做出来),否则有时候角色停在天上下不来就是你考虑不周了。
2dfm中还有一套下蹲前进后退的技能,如果你不想要制作下蹲中前进或者后退,就可以直接把下蹲技能复制到这两个技能里,那样玩家按“前下”,“后下”触发的技能看起来还是蹲。
但其实这俩技能很有用的,例如你要制作街霸3的Blocking技能,那么下蹲前进技能就可以仿效前面我们第一个例子那样制作Blocking状态。
另外,如果你要制作一个角色,可以有两套战斗姿态,比如一套姿态面对观众,另一套背对观众,那么你可以用站立行走制作面对观众的行进技能,用下蹲移动制作背对观众的行进技能。玩家只要切换下蹲和站立就能改变行进姿势,是不是很酷呢?
关于连续跳跃:许多游戏有2重跳跃,其实用2dfm来制作真是太简单了,你只需要在跳跃技能最初设置一个角色变量(比如A)来记录是否已经跳跃过了一次,如果第一次跳跃,则变量A开始为0,你跳起瞬间用脚本把A设置为1表示处于第一次跳跃中,此时设置指令分歧,只要玩家再次输入跳跃指令,就自动触发一个空中的“假攻击”技能(之所以说是假的,是因为它只是一个没有攻击性的移动技能,你甚至连图片都不用给它做,它只包含一个变量操作,让先头变成1的那个变量A变回0,然后直接让这个假攻击技能跳转到跳跃技能最开始,注意要跳到把A变成1的变量操作之后,也就是不再执行“把A变成1”,让它保持为0,避免再次触发连跳)。
只有在玩家落地后重新起跳时,才会重新执行“把A变成1”,从而获得再次连跳的机会。
2009年11月02日 20点11分
3
level 9
2--许多人做格斗游戏都仅仅注重打人而不注重挨打,这是彻底错误的。一个好的游戏,制作者最花工夫制作的应该是挨打。只有挨打的效果好,才能反衬出攻击效果的华美和有力,比如打击感全靠挨打来体现,攻击技能再华丽也体现不出攻击效果,因为挨打技能才是攻击的效果体现。
而且最关键的是,挨打技能包含绝大部分可能出现游戏Bug的可能,如果你不下功夫,你的游戏很可能会有很多漏洞,如果它们是致命漏洞,怎可能导致玩家在玩游戏时让角色“卡死”在游戏中,你的游戏制作就彻底失败,招式再华丽也是一坨垃圾。
挨打技能首先注重的是没有死锁的bug,比如你做一个被绊倒的技能,倒下之后就不爬起来了,那你这游戏就没法玩了,或者你制作一个被投掷的技能,被抓到后就死在原地了,没有后续被投掷的动作,这也是死锁。
再比如你制作一个被投掷动作,敌人被抓到的一瞬间,如果还有其它角色(比如你的游戏是多对多战斗)打了被抓的角色一下,系统就傻了,不知道现在该让被抓角色处于受攻击状态,还是继续被投掷,画面可能会定版。这都是很常见而且你应该想得到去避免的问题。
2009年11月02日 20点11分
4
level 9
你应该每做一个新的攻击技能,都去验证下会不会对以前做的某些受伤技能造成死锁,尤其是在你制作一个新的投掷技能后,你更应该去验证,因为大部分死锁都是投掷造成的。
一切安全之后,你才可以去考虑挨打技能的效果。
挨打技能最重要的效果不是“打击感”!!!而是防止无限连击。
你应该每制作一个新的攻击技能,都尽可能考虑一下“这个技能会不会收招太快,太容易连下一次攻击了?”、 “现在好像应该制作击倒对手的技能了吧,不能总打不倒啊!”之类的问题。
实在不行,你可以给所有受伤技能加一个变量操作(让受到连击数+1),一旦总联机数达到某一数值,角色自动转到不受攻击的倒地状态来摆脱被连击。
记住,格斗游戏的连击的魅力在于“在不能无赖死对手的前提下,有一定连击难度,但又不过分困难”,如果你觉得连击多才叫好游戏,你干脆去做射击游戏好了,你不懂格斗游戏!
追求连招的制作者,十位之中有8位制作出的角色都有无限连击技能,这些角色除了看电脑用他们时候好看之外,在玩家手里一操作就发现全是垃圾。不是太无束负就是太无耳止,要们打中敌人一直连死对手,要么一下也不挨打。这样的角色不仅部代表制作者厉害,而且恰恰说明制作者不懂格斗游戏。
2009年11月02日 20点11分
5
level 9
这些问题都解决后,你才可以去想“打击感”的问题。
说实话,打击感什么样算是好,没有固定标准。
有人认为街霸2的好,出招快速且击中瞬间有个短暂定格,有时还带有角色的震动。有人觉得定格时间太短,有时超杀看起来不够力度。
也有人认为真人快打系列的好,打中的瞬间对手很快复苏,更有真人对打的效果,挨打后很快就能反击,只有在受到重创后才有明显受伤动作。有人觉得这样太倾向于缠斗了。
还有人认为街霸4的好,出招奇快,命中后有比较明显的停顿,力度十足。但有人觉得停顿与出招相比时间太长,令连续技缺乏连贯感觉。
总之,各人的爱好是不一样的,你不需要去刻意迎合谁,如果你的游戏没有bug和无限连击,那么至少可以说不算是个差游戏。
我个人觉得,只要你设定挨打动作有一定的硬直时间,让游戏打起来有节奏感就可以了,至于是否要渲染力度感,全看你自己喜好。
2009年11月02日 20点11分
6
level 9
3--防御技能。防御技能是非常有学问的!!
首先你要知道,防御技能在共有中招反应列表中应该不要点选“中招项”!否则防御普通技能也要掉血。而受伤技能一般来说都是应该点选“中招项”属性的(其实不点也可以,但是“中招项”对于脚本中的“命中”判定有标志作用,如果你不点选,那么就算挨打掉血,系统也不认为攻击命中了)。
防御技能是怎样生效的呢?实际上是敌人攻击区和我方防御技能的任何一种受伤区域(不包括纯阻挡区或者无属性区)瞬间重合,系统会判定角色时候处于防御状态(玩家有没有按“后”方向),如果是,就自动出现防御技能(除了投掷技能时)。然后转到防御成功或者失败(就是被命中)的技能。
如果你使用“按键防御”,防御技能实际上和攻击相抵技能就没有什么本质差异了,只要和对手攻击技能相碰,就判定是否防御成功。
了解这两个原理后,咱们可以自己模仿着用脚本制作自己的防御技能,比如你想让你的游戏里面在敌人攻击时你按除了“后”以外的按钮来防御,就可以给移动技能中添加指令分歧脚本,设定你想要的指令来触发防御,而把原来的防御技能制作成普通站立来屏蔽掉。这样你就等于修改了防御指令的规则,让你的游戏有自己的特色规则。
2009年11月02日 20点11分
7
level 9
防御技能的关键也是看被打中后的效果,也就是“防御成功”的动画,正常来说,防御成功的动画应该是防御的动画加上角色后移的脚本即可,应该是统一的,站立防御和蹲着防御或者空中防御都有自己对应的一个防御成功技能(如果你想要按照攻击力分为强弱状态,那就可能是多个而不是一个,比如站立防御成功技能可以分为被轻击后和被重击后两种),一定要记得制作它们,否则防御技能成功后,将没有防御效果出现。
而这些其实还不是防御技能的学问所在!!
X-men2大家应该玩过吧,反派的大块头“雷公锤”有些技能即使被攻击后,它只是受伤,不产生任何受伤姿态。你要怎样制作一个这类的角色呢?
其实很简单,他的每个“不受创”技能其实都是防御技能!!只不过是附带了攻击区域的防御技能!!而且,这些技能点选了“中招项”!
而要想触发这些技能,你需要做一个空技能(没有动画,只有脚本),空技能会设定某一个角色变量(例如B)为1或者其他的数值,并且自动转到防御技能,你事先应该在防御技能动画后面添加一个“完”的脚本,然后再在“完”之后制作“雷公锤”的某些攻击技能动画,附带攻击区域。然后在防御技能最开始添加脚本“变量分歧”,当角色变量B为0时候,自动播放正常防御技能动画,当B不是0,就跳转到“完”脚本之后的其他的动画去。
这样,每当玩家使用指令激活那个空技能,空技能就自动设置角色变量B的数值不为0,从而在自动跳转到防御技能后让防御技能根据B值不为零跳转播放“雷公锤”攻击特技。
记得在攻击特技最后添加脚本把变量B重新设置为0,否则普通防御技能将不正常。
而最关键的是,你还要把防御技能中的变量脚本和雷公锤技能动画复制到“防御成功技能”中去,具体原因看了下面你就明白:
这样做出的雷公锤技能,即使被打中,也仅仅掉血,没有任何受伤反应。由于是防御技能,被打中后虽然受伤,但是播放的仍然是防御成功动画,由于我们设定防御成功动画中也有雷公锤技能的动画,所以,此时防御成功的动画是雷公锤的攻击技能,看起来就像没有出现任何受伤动作一样!!我们的雷公锤技能制作成功。
这类没有受创硬直的技能,理论上来说比无敌技能还可怕,属于攻守兼备的技能。
2009年11月02日 21点11分
8
level 9
下面来说一说著名的飞行道具技能。
飞行道具不仅有飞行动画,还应该有个命中动画。飞行动画显然是要设置移动速度的,命中动画重要把运动速度用一个空的坐标移动脚本清零。
飞行动画是飞行道具的关键。这里要给飞行道具设置受攻击区域和攻击区域,攻击力和攻击属性,以及敌人受伤反应。
注意要给飞行道具的飞行动画添加一个招式分歧,设定当攻击命中时飞行道具从飞行动画转到命中动画。
然后制作你的人物发射飞行道具的技能动画,并在动画中添加一个“出现物体”,设定飞行道具飞行动画为这个物体,并且设置物体出现的坐标(就是飞行道具出现的坐标),注意设置“道具已经存在时”转向站立技能,这样就OK了。
当玩家使用这个技能时,就能发射飞行道具,飞行道具不会被对方打掉而命中敌人,而且两个飞行道具相撞回同时播放命中动画(就是常说的对气),此外,玩家在这个飞行道具还存在时,是不能再次发出同样的飞行道具的。
2009年11月02日 22点11分
10
level 9
下面说说伟大的飞行道具!
之所以说伟大,原因是:你可以用飞行道具实现很多的特殊效果!!
比如制作一个角色跟班(例如侍魂中加尔福特的爱犬,或者一个从画面外飞奔而出的援护选手),你就需要用飞行道具来做。
抵消飞行道具的技能,比如草剃京的对空技就有这个功能,用来抵消对方飞行道具,就是靠飞行道具做护盾。
此外,飞行道具可以用来测距,你可以做一横排隐形飞行道具放在你的角色前面,它们对应了不同的位置,如果其中一个命中了敌人(注意,你不要设定敌人中招反映,这些飞行道具攻击力也都是0),会触发一个脚本跳转。
如果你想要制作一个类似街霸2韦加将军翔空烈踏那样的跟踪技能,你就应该在韦加使用该技能的最初阶段(起飞瞬间)用这一排飞行道具测距,如果其中一个命中敌人,就会触发对应飞行速度的脚本,让韦加飞行速度变化到一个值,以便能迅速飞到敌人头上。这一排不同位置的飞行道具自然对应了不同飞行速度脚本的跳转,所以,只要你给每一个飞行道具配上合适的脚本跳转,韦加将军就能近似地“跟踪性地”飞向敌人头顶。这比使用计算坐标的手段要简单得多,而且一旦发现有问题,也很好纠错调整!
如果你会使用脚本给电脑选手制作比较复杂的AI,那么飞行道具测距就更加重要,例如你能用它来判定对手飞行道具的位置,从而让角色决定是闪避还是防御,当然这就说的有些远了。
2dfm中飞行道具本身也可以发射飞行道具!!所以,就算你制作了一群跟班,他们个个可以扔飞镖。但你要注意的是,不要让飞行道具自己发射自己!否则会造成程序死锁。但你可以让它发射一个样子和它相同的另外的飞行道具。
2009年11月02日 23点11分
11
level 9
飞行道具作为一个独立脚本存在则是更加有趣的,比如你可以用一个隐藏的飞行道具在场景里播放音乐或者计算分数,或者判定胜负,或者制作一个可见的飞行道具人物作为一个捣乱分子扔香蕉皮。
攻击技能的好坏,全在于你如何设置角色的受攻击区域。
2dfm中受攻击区域和攻击区域一样,允许同时并存多个!而且可以效能不同。
于是你就可以很方便地制作出有要害部位的角色,角色要害部位防御力较差,被击中受伤较多,而其他部分抗打击能力较强。这是许多经典格斗游戏都没能做到的设定。
受攻击区域既然是效能不同的,就不要让它们重叠,重叠后的效果是以防御力差的区域为准的。
记住,应该给攻击和受攻击区域都设定适当的阻挡区域,这样可以在命中时弹开双方,避免过多连击。
现在我们着重说一下死亡技能。
死亡技能就是生命为0时候自动播放的技能。实际上,这个技能应该用来判定胜负而不一定非要表现成死亡。
一般来说,如果你要设定生命为零时候才结束战斗,那么追打尸体就做不出来了。要追打尸体的话,你就需要设定在角色生命少于某一值的时候,强制进入无抵抗力状态,此时对手可以在几秒钟内尽情“虐尸”(而被虐者少量回血保持不死),时间一到,无抵抗力者生命自动清零,战斗结束。
这样做的话,实际上进入无抵抗力状态就等于输了,但是我们只是把胜负在血量上提前一小点,换来的是虐尸的功能。你甚至可以用这个办法制作出类似真人快打里面“Finish Him”那样的绝杀功能。
2009年11月02日 23点11分
13
level 9
投掷技能启动瞬间应该是角色全身不受攻击的,之后会有段时间恢复到正常状态。这样做的好处是避免“投掷敌人同时被敌人攻击,敌人处于被抓状态形成死锁”。
与普通拳脚技能相似的是,投掷技能也可以使用“远近距判定”。当你制作角色时,在角色的基本属性中,设定了多少像素距离为近距,则普通投技应设置为只在近距条件下可以使出,指令投一般是远近距离都能用的。
一些普通攻击技能也是在近距时可以正常使出,在远距时使用应该是自动变成其他的技能。
这里所谓远近距说的是距离敌人的水平距离。实际上你也可以把近距离设置为0,那就代表远近距都一样。
一般来说,为了避免被投掷者因为有受攻击区域而在被投掷时遭到其他角色打击形成程序死锁,我们一般应该把被投掷者的受控制状态设定为没有受伤区域,而只有阻挡区域,用脚本中的“槽”功能来扣掉对手生命,显然这样做也同时是无视对方防御力的。而投掷技能使用者在投掷过程中也应该只有阻挡区域,没有受伤区域,以免被另外的角色攻击打断投掷,形成被投掷者死锁。
你可以设定敌人在被投掷状态中可以输入一些指令来解除被投掷,或者减少投掷伤害。例如可以制作一个空翻技能,当角色被投掷时,玩家输入某些指令触发空翻技能摆脱投掷或减低所受伤害(类似超级街霸2x的设定)。
2009年11月03日 00点11分
15
level 9
结语:
本贴进提供给已经对2dfm的基本使用有了初步了解的朋友作为参考,没有熟悉2dfm界面的朋友先不要着急看这个帖子,当你熟悉界面后,才能比较明确地知道我说的是什么。
没有时间配图,大家发挥理解能力吧。
2009年11月03日 00点11分
16
level 11
回复:2楼
还没看完,仅就2楼的blocking,似乎还不完善。
1. 助跑倒是屏蔽了前前作弊,但反复的后前,仍然可以作弊。
2. 这种blocking似乎抵抗“王八波”的时候,过于霸道,几乎无视。
2010年03月31日 09点03分
19
level 12
反复后前也会前冲或快退。
2. 这种blocking似乎抵抗“王八波”的时候,过于霸道,几乎无视。
----------------------------
街霸3的blocking就这么霸道,B掉对手超杀大气功(n连击的)都很正常。。。
2010年03月31日 10点03分
20
level 12
有一种传说中的操作绝学就叫连B。。。简直不是人类。。
2010年03月31日 10点03分
21