3.3更新后多出了一些新的概念,钢身、Buff、分支变身……
分支变身在官方版中的体现是始解一护同时按下S+J+K,可以变身为半虚一护,但是这个按键方案是存在问题的。一般的JK键变身需要的条件大致为:
0.该人物具有变身能力(废话)
1.持有3条气
2.人物处于闲置状态(指站立或J1的第一帧)
而条件2在WJK、SJK这里是不同的:
人物处于闲置状态(指除被打、被击飞、开场、胜利、死亡、失败等无法操作的情况以外的任意状态)
意即WJK和SJK可以在技能释放的中途发动(会打断该技能),甚至可以在空中使用,比如始解一护可以藉由这个特殊情况打出诸如DJ+JJJ+SU+SJK+WU这样的奇葩连招。这可以当做一个特性,但我认为这是属于BUG的,那么当然是要想办法修复它啦!
从诸多的禁用技能效果的特技可以看出,人物的技能是可以用一些代码来“封印”的,那么便从这里切入:
1.在非站立的情况下,禁用WJK
2.在非站立或封印的情况下,禁用SJK
简化一下逻辑:
若处于站立,允许WJK和SJK
若处于防御,允许SJK
不在这两种情况内,两者都禁用
然后从代码角度分析:
判断人物的状态,可以用parent.$fighter_ctrler.getTargetSP().getCurrentTarget().actionState所返回的数据进行判断,若返回了0,说明人物正处于站立状态;若返回了20,说明人物正处于防御状态;若返回其他数据,则人物处于其他状态。
那么就好办了,在人物运行的每一帧都进行检测,如果满足条件,就可以使用某某技能,这就是我们要的结果。
以下是成品的代码,放在人物的站立处便可起作用,有特殊需要的话可以自行修改
import flash.events.Event; //导入事件类
this.addEventListener(Event.ENTER_FRAME, bankaiWSLimitHandler, false, 0, true); //添加侦听器
function bankaiWSLimitHandler(event: Event): void
{
//switch语句,用于条件判断,可以认为是简化版的if-else if-else语句
switch (parent.$fighter_ctrler.getTargetSP().getCurrentTarget().actionState)
{
case 0:
parent.$mc_ctrler.getAction().waiKaiW = "万解W";
case 20:
parent.$mc_ctrler.getAction().waiKaiS = "万解S";
break; //break语句,终止命令,此处情况“0”后未设置break,因此在情况“0”中也会运行情况“20”中的代码
default:
parent.$mc_ctrler.getAction().waiKaiW = null;
parent.$mc_ctrler.getAction().waiKaiS = null;
break;
}
}
补充:使用上述代码后可能会造成WJK难以按出,修改此处判定即可优化手感:
default:
if (parent.$fighter_ctrler.self.mc.currentFrameLabel != "砍技1" && parent.$fighter_ctrler.self.mc.currentFrameLabel != "砍技2")
{
parent.$mc_ctrler.getAction().waiKaiW = null;
parent.$mc_ctrler.getAction().waiKaiS = null;
}
break;