2016.11.0512:20

AI 立回技巧相关(Part.1)

Episode 10 立回技巧相关(Part.1)

各位好久不见,我又回来了,这次我们谈谈立回的某些技巧

众所周知,立回是什么,一个人在战斗中的位置移动,走路,跑步,跳跃等等之类的,这些都是立回,怎么样才能做到所谓的精准,发挥到极致呢?其实这个也是根据这个角色的性能而决定的,比如你有当身,可以主动进攻空振当身什么的,这样比较赚,如果你拳脚和硬直属于比较变态的那种,你可以主动进攻,猛压的那种,也就是前跳,跑步和攻击的概率可以写高一点,如果你属于下位机,不妨把防御写好一点,然后等破绽抓硬直来进攻,格斗的精髓,记住,如果你有龟的资本的话,那么能龟就龟,因为你在开场时不知道对面是什么样的性能,所以如果能三十六计走为上策的话是不错的选择,当然也看作者的风格

我们今天的正题主要谈谈大前跳的作用,大家知道,大前跳是跳的很高,很远,适合打逆和突进这种的跳跃,非常实用,它的作用除了进攻以外也可以用来抓硬直,那么怎么做到呢

首先,我们先看看自己的大跳性能,比如说我举个例子,大前跳是跳跃,也是要经过state 40-50-52 这么一个变化的,打开DEBUG,比如40这个状态是4帧,然后进入50,按下pause后按scrool lock数帧数,或者截取得到最后1帧,再看DEBUG显示时间是多少,比如显示的是34,因为是从0开始数的,所以时间一共是4+35,也就是39,那么取得了这个数据,大跳的时间是39帧

接下来要怎么用呢,之前我们学过用helper记录的方法,这里也举个例子

;----------------------------------------------------------------------
[State 33000, Null]
Type = Null
TriggerAll = Time = 0
Trigger1 = var(30) := -1
Trigger1 = var(31) := -1
Trigger1 = var(32) := -1
Trigger1 = var(33) := -1
Trigger1 = var(34) := -1
Trigger1 = var(35) := -1
Trigger1 = var(36) := -1
Trigger1 = var(37) := -1
Trigger1 = var(38) := -1
Trigger1 = var(39) := -1
IgnoreHitPause = 1

;----------------------------------------------------------------------
;敵に飛び道具ステート記憶
;----------------------------------------------------------------------
[State 33000, VarSet]
Type = VarSet
TriggerAll = EnemyNear(Root,var(58)),NumProj = 1
TriggerAll = EnemyNear(Root,var(58)),Ctrl = 0
TriggerAll = EnemyNear(Root,var(58)),MoveType = A
TriggerAll = EnemyNear(Root,var(58)),AnimTime < EnemyNear(Root,var(58)),Time - 35 (先记录好跳跃全程时间)
Trigger1 = Helper(33000+Root,ID),var(30) = -1
var(30) = EnemyNear(Root,var(58)),StateNo
IgnoreHitPause = 1

; Abs(EnemyNear(Root,var(58)),Time - EnemyNear(Root,var(58)),AnimTime) 这个代表对面状态总时间
....

[State 33000, VarSet]
Type = VarSet
TriggerAll = EnemyNear(Root,var(58)),NumProj = 1
TriggerAll = EnemyNear(Root,var(58)),Ctrl = 0
TriggerAll = EnemyNear(Root,var(58)),MoveType = A
TriggerAll = EnemyNear(Root,var(58)),AnimTime < EnemyNear(Root,var(58)),Time - 35
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(30)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(31)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(32)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(33)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(34)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(35)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(36)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(37)
TriggerAll = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(38)
Trigger1 = Helper(33000+Root,ID),var(30) != -1
Trigger1 = Helper(33000+Root,ID),var(31) != -1
Trigger1 = Helper(33000+Root,ID),var(32) != -1
Trigger1 = Helper(33000+Root,ID),var(33) != -1
Trigger1 = Helper(33000+Root,ID),var(34) != -1
Trigger1 = Helper(33000+Root,ID),var(35) != -1
Trigger1 = Helper(33000+Root,ID),var(36) != -1
Trigger1 = Helper(33000+Root,ID),var(37) != -1
Trigger1 = Helper(33000+Root,ID),var(38) != -1
Trigger1 = Helper(33000+Root,ID),var(39) = -1
var(39) = EnemyNear(Root,var(58)),StateNo
IgnoreHitPause = 1

这样就可以记录10个地波状态了,确保先有35帧以上,然后开始写AI,花费一个var

;-----------------------------------------------------------------------
; 相手の特殊ステート(飛び道具)記憶
;-----------------------------------------------------------------------
[State -3, VarSet]
Type = VarSet
Trigger1 = fvar(9) != 0
FV = 9
Value = 0
IgnoreHitPause = 1

[State -3, 相手の特殊ステート]
Type = Null
TriggerAll = var(59) = 1
TriggerAll = NumHelper(33000+ID)
TriggerAll = EnemyNear(var(58)),MoveType = A
Trigger1 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(30)
Trigger1 = fvar(9) := fvar(9) + 1 || 1
Trigger2 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(31)
Trigger2 = fvar(9) := fvar(9) + 1 || 1
Trigger3 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(32)
Trigger3 = fvar(9) := fvar(9) + 1 || 1
Trigger4 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(33)
Trigger4 = fvar(9) := fvar(9) + 1 || 1
Trigger5 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(34)
Trigger5 = fvar(9) := fvar(9) + 1 || 1
Trigger6 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(35)
Trigger6 = fvar(9) := fvar(9) + 1 || 1
Trigger7 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(36)
Trigger7 = fvar(9) := fvar(9) + 1 || 1
Trigger8 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(37)
Trigger8 = fvar(9) := fvar(9) + 1 || 1
Trigger9 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(38)
Trigger9 = fvar(9) := fvar(9) + 1 || 1
Trigger10 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(39)
Trigger10 = fvar(9) := fvar(9) + 1 || 1
IgnoreHitPause = 1

现在,fvar(9)如果变为1就代表符合要求可以大跳

[State -3, 大ジャンプ 対飛び道具]
Type = ChangeState
Value = 36
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = StateType != A
TriggerAll =!EnemyNear(var(58)),Ctrl
TriggerAll = EnemyNear(var(58)),StateType != A
TriggerAll = EnemyNear(var(58)),StateType != L
TriggerAll = EnemyNear(var(58)),MoveType != H ;上面是基本属性不多解释了
TriggerAll = EnemyNear(var(58)),AnimTime <= -39 ;39帧跳跃
TriggerAll = EnemyNear(var(58)),StateNo = [1000,2000) ;2000以上可能是超杀最好别去抓
TriggerAll = EnemyNear(var(58)),Facing != Facing ;面对面
TriggerAll = EnemyNear(var(58)),Time >= 50-var(59)*10 || var(59) > 9 ;反应相关
TriggerAll = Random < EnemyNear(var(58)),Time*ifelse( var(59) > 9,25,20) ;概率相关
TriggerAll =!InGuardDist || Abs(EnemyNear(var(58)),Pos X - Pos X) > 190 ;如果默认guarddist = 160的话,190大概就是无法检测在GuardDist内的范围,但是确认攻击,也当成InGuardDist就行了
Trigger1 = Abs(EnemyNear(var(58)),Pos X - Pos X) = [A,B] ;这里需要自己算,配合空中拳脚立回自己实际测量
Trigger1 = !Enemy,NumProj && (fvar(9) != 0 || var(59) < 10) ;因为出现波可能就晚了,你不知道波是什么样的,所以要赶在没有地波出来之前出跳跃最好,同时也可以排除0帧波什么的恐怖技能,但是已经确认状态,当然也可以加一个低级AI

大概过程就是这样,希望各位能够自己亲身体会

好了,今天的课就先到这,如果您有什么问题的话可以私信我(只要是我会的,不管什么问题),我会第一时间给您答复,或者把问题发到我的邮箱

mizore@kotori.moe, 谢谢大家!

发表留言

秘密留言

No title

This is my first time pay a visit at here and i am in fact happy to read all at one place.

No title

WOW just what I was searching for. Came here by searching for manicure

No title

Hey there, I think your blog might be having browser compatibility issues.
When I look at your website in Safari, it looks fine but when opening
in Internet Explorer, it has some overlapping. I just wanted to give you a quick
heads up! Other then that, great blog!

等待许可的留言

此留言需要管理员的许可

等待许可的留言

此留言需要管理员的许可

等待许可的留言

此留言需要管理员的许可

等待许可的留言

此留言需要管理员的许可

等待许可的留言

此留言需要管理员的许可

アクセス

オンライン