[Mugen]ai制作基础教程—6.切反,抓硬直,插动
[Mugen]ai制作基础教程—6.切反,抓硬直,插动
切反就是在11区人编写的ai中常看见的“切り替えし”
有点类似于凹招。
先解释下凹的定义,凹其实就是对手攻击时,用带无敌的升龙或超杀等技,利用无敌时间,躲过对手的判
定,打中对手。
连段中用升龙或超杀不算凹
再说下切反和凹的同异。
相同点是2者都是在p2movetype = A时做的动作。而且必须写在防御前面,不能加!inguarddist。
不同点是凹必须是用攻击反击回去,而且一般是在立回态。
切反不一定是用攻击,用带无敌的44后退,无敌的移动技(阿修罗闪空之类)躲避对手攻击也可以。
而且也包括了在防御硬直中才能发动的防反技。
其实写起来很简单,p2movetype = A的时候,出对应的招就行。。。
超反应相关
在p2movetype = A的时候,不考虑对手的出招整体时间的快慢,在符合条件的情况下立刻用各种切反,那
就是超反应。
如果在某些情况下,不要超反应,那就得加个限制。
可以用random限制下几率
也可以设置反应时间
举个例子
[state -3,626c]
type = changestate
value = 1320
triggerall = roundstate = 2 && var(59) > 0 && statetype !=A
triggerall = power >= 1000
trigger1 = ctrl && p2movetype = A
如果你不要超反应,那再加个条件
triggerall = enemynear,time >= 30。
这样你的反应就是30F,当对手出招时间超过30F时再反应过来凹。
如果你想ai等级11以上开启超反应。
那么就这么写
triggerall = enemynear,time >= 30 || var(59) >= 11 ;这里假设var(59)是控制ai等级的
或者使ai等级直接与反应时间挂钩也行
triggerall = enemynear,time >= (33-3*var(59))
一般凹招必须再加一句triggerall = enemynear,animtime < -X
免得出现对手都快收招了你再凹结果被防的杯具。
X是升龙的发生时间,用前面教程里提到的方法测一下。
triggerall = enemynear,animtime < -X || var(59) < 9
写成这样的话,ai等级9以下就不计算对手收招时间了.。
最好再用random限制下概率
triggerall = random <= 90*var(59)
做对人向的ai时,不推荐加入超反应。
抓硬直(隙付き)
先用前面教程里所讲的测招式发生速度的办法,测下某招的发生速度
假设测出某招是15F
那在这招的state下加入
triggerN = !inguarddist && enemynear,animtime < -15
triggerN = p2movetype = A || (p2movetype = I && !enemynear,ctrl) ;对手在攻击时或做无法控制的
非攻击动作时。
推荐把作为起手连段伤害高的招写在前面
插动(抢招)
这个是一种赌博般的行动。
不是用无敌技凹,是用发生快的轻拳,轻脚打掉对手的攻击,一般写在防御前面,不写!inguarddist。
11区那边写的ai里以“暴発”表示
一般含有类似语句
triggerall = p2movetype = A
triggerall = ctrl
triggerall = enemynear,time <= 1 ;重点是这句,必须在对手出手后1F以内。否则风险大增。
trigger1 = random <= 100 ;概率不能太高,毕竟是赌博。
trigger1 = p2stateno != 200 && p2stateno != 400 ;可以考虑加这句,一般对手的轻拳和蹲下轻拳是
这2个state号,出轻拳时一般插不掉。
通常用来插动的轻拳或轻脚发生要快点,最好5F以下,7F以上的还是免了。攻击范围越长越好。
插动(爆发)这里
推荐加一个条件p2stateno = [200,649]
因为大多数人物,在这个stateno范围内是普通技
有点类似于凹招。
先解释下凹的定义,凹其实就是对手攻击时,用带无敌的升龙或超杀等技,利用无敌时间,躲过对手的判
定,打中对手。
连段中用升龙或超杀不算凹
再说下切反和凹的同异。
相同点是2者都是在p2movetype = A时做的动作。而且必须写在防御前面,不能加!inguarddist。
不同点是凹必须是用攻击反击回去,而且一般是在立回态。
切反不一定是用攻击,用带无敌的44后退,无敌的移动技(阿修罗闪空之类)躲避对手攻击也可以。
而且也包括了在防御硬直中才能发动的防反技。
其实写起来很简单,p2movetype = A的时候,出对应的招就行。。。
超反应相关
在p2movetype = A的时候,不考虑对手的出招整体时间的快慢,在符合条件的情况下立刻用各种切反,那
就是超反应。
如果在某些情况下,不要超反应,那就得加个限制。
可以用random限制下几率
也可以设置反应时间
举个例子
[state -3,626c]
type = changestate
value = 1320
triggerall = roundstate = 2 && var(59) > 0 && statetype !=A
triggerall = power >= 1000
trigger1 = ctrl && p2movetype = A
如果你不要超反应,那再加个条件
triggerall = enemynear,time >= 30。
这样你的反应就是30F,当对手出招时间超过30F时再反应过来凹。
如果你想ai等级11以上开启超反应。
那么就这么写
triggerall = enemynear,time >= 30 || var(59) >= 11 ;这里假设var(59)是控制ai等级的
或者使ai等级直接与反应时间挂钩也行
triggerall = enemynear,time >= (33-3*var(59))
一般凹招必须再加一句triggerall = enemynear,animtime < -X
免得出现对手都快收招了你再凹结果被防的杯具。
X是升龙的发生时间,用前面教程里提到的方法测一下。
triggerall = enemynear,animtime < -X || var(59) < 9
写成这样的话,ai等级9以下就不计算对手收招时间了.。
最好再用random限制下概率
triggerall = random <= 90*var(59)
做对人向的ai时,不推荐加入超反应。
抓硬直(隙付き)
先用前面教程里所讲的测招式发生速度的办法,测下某招的发生速度
假设测出某招是15F
那在这招的state下加入
triggerN = !inguarddist && enemynear,animtime < -15
triggerN = p2movetype = A || (p2movetype = I && !enemynear,ctrl) ;对手在攻击时或做无法控制的
非攻击动作时。
推荐把作为起手连段伤害高的招写在前面
插动(抢招)
这个是一种赌博般的行动。
不是用无敌技凹,是用发生快的轻拳,轻脚打掉对手的攻击,一般写在防御前面,不写!inguarddist。
11区那边写的ai里以“暴発”表示
一般含有类似语句
triggerall = p2movetype = A
triggerall = ctrl
triggerall = enemynear,time <= 1 ;重点是这句,必须在对手出手后1F以内。否则风险大增。
trigger1 = random <= 100 ;概率不能太高,毕竟是赌博。
trigger1 = p2stateno != 200 && p2stateno != 400 ;可以考虑加这句,一般对手的轻拳和蹲下轻拳是
这2个state号,出轻拳时一般插不掉。
通常用来插动的轻拳或轻脚发生要快点,最好5F以下,7F以上的还是免了。攻击范围越长越好。
插动(爆发)这里
推荐加一个条件p2stateno = [200,649]
因为大多数人物,在这个stateno范围内是普通技
您在这个论坛的权限:
您不能在这个论坛回复主题