|

楼主 |
发表于 2010-4-13 10:06:00
|
显示全部楼层
Re:【转帖】2d格斗游戏基本规范框架
留用别插楼
当你在制作符合规则的投掷技能时你才会明白制作这样合格的投掷技能的技术含量要比你制作N个超杀都要高,因为这类投掷规则设定的实现是个挺复杂的事情,很多制作高手都搞不定(多少会有一些bug出现)。
5--判定区域分类:
这是个很技术的问题。别以为格斗游戏中只有攻击范围和受攻击范围,其实按照功能划分,范围种类很多的:
--纯受伤范围:2dfm中直接可以实现。没有阻挡性,可以受攻击。
mugen中需要代码标注一下受伤范围没有阻挡性。
--阻挡受伤范围:可以受攻击,但有阻挡性,可以弹开有阻挡区域的对手。2dfm和mugen都可直接实现。
--阻挡防御范围:防御属性的受伤范围,有阻挡性,可以弹开有阻挡区域的对手。2dfm可以直接实现,mugen需要给受伤范围添加防御属性代码。
--纯攻击范围:有攻击性,无阻挡性。2dfm和mugen都能直接实现。
--阻挡受伤攻击范围:可被攻击,有攻击性,且有阻挡性,可以弹开有阻挡区域的对手。2dfm可以直接实现,mugen需要给攻击范围重叠一个受攻击范围。
--阻挡纯攻击范围(俗称无敌攻击范围):不可被攻击,有攻击性,且有阻挡性,可以弹开有阻挡区域的对手。2dfm可以直接实现,mugen需要给攻击范围重叠一个受攻击范围并用代码设置这个区域不受伤害。
--纯阻挡范围:无攻击性,不可被攻击,有阻挡性,可以弹开有阻挡区域的对手。2dfm可以直接实现,mugen需要给受攻击范围添加代码设置这个区域不受伤害。
--空区域:不受攻击,不具有攻击性,不具有阻挡性。什么区域都不设置即可,2dfm和mugen都可以实现。
--投掷攻击区域:不受攻击,无阻挡性,对攻击态的对手无效,对受伤后退或者防御成功后退的对手也无效,对除此之外的情况皆有攻击性,能取消对手防御技能但不能取消对手防御成功后的后退状态。
2dfm实现办法:设置攻击范围,在攻击属性中勾选不能追击(不能追击中招状态),防御无效(取消对手防御但不取消防御成功后的后退),然后把攻击技能设置为中招项即可全部实现。
mugen的实现办法:制作一个投掷预备动作state,由于投掷应该对防御成功状态(标号为140,141,142)或者受伤状态对手无效,请给你的投掷技能定义模块[statedef XXX]下面添加新的[state XXX,...]模块,使用changestate,设定trigger为P2StateNo处于某些数值范围(也就是角色防御成功动作的state以及受伤动作state的标号数值范围)时,投掷预备动作state转入站立state 0。如果P2StateNo不在这些范围内则投掷预备动作转入投掷攻击state。
然后制作一个投掷攻击state并设置攻击范围,通常添加代码:
type = HitDef
Trigger1 = Time = 0
attr = S, NT ;攻击属性: 站立,普通投掷
priority = 1, Miss ;投掷优先权最低,类型必须是miss(击空)或者dodge(闪避),这保证投掷技能对攻击技能无效。
guard.dist = 0 ;对手不能触发防御。
实际上mugen实现这个功能要比2dfm方便得多!!但效果没什么差别。
--格挡反击范围:有阻挡性,受攻击但不会被伤害,无攻击性,被攻击命中后自动触发反击技能,对投掷攻击无效(会被投掷攻击击中并强制进入被抓状态,不会触发防御反击)。2dfm中有一种受伤范围专门用来制作这个,并可设置该范围对那些技能有防御反击效能。mugen中一般是制作受伤范围来作为这种格挡反击范围,设定触发条件来制作,常用的是GetHitVar(*)代码,当我方被击中后返回一个var(*)=1数值给计算机,此外你要设置一个[state -3,**]来实时监控,当var(*)=1条件成立,就强制取消我方受攻击的效果反而转变成控制对手被我方攻击,这都需要代码来实现。 |
|