自動步行

在格鬥遊戲之中, 懂得如何移動到一個有利位置是十分重要的. 在這一節將會介紹如何制止電腦亂行.
;Stop AI Walk [State -1]
type = AssertSpecial
trigger1 = Var(59);當 ai 開啟昤
flag = NoWalk;就禁止按方向鍵步行

之後就是控制 ai 自動步行. 以步行至對方面前 80 pixel 為例:
[state -1]
type = ChangeState
trigger1 = P2bodyDist X != [60,100];通常會在要在目標位置加減 10-20 作為空間
trigger1 = Anim != 5
trigger1 = StateNo = 0
trigger1 = Pos Y = 0;確保是在地上
value = 20
之後是 state 20 的修改:
;---------------------------------------------------------------------------
; Walk
[Statedef 20]
type = S
physics = S
sprpriority = 0

[State 20, 1]
type = VelSet;如人物在預定位置後就向前行
trigger1 = !Var(59)
trigger1 = command = "holdfwd"
trigger2 = Var(59)
trigger2 = P2BodyDist X >= 90
x = const(velocity.walk.fwd.x)

[State 20, 2]
type = VelSet;如人物在預定位置前就向後行
trigger1 = !Var(59)
trigger1 = command = "holdback"
trigger2 = Var(59)
trigger2 = P2BodyDist X <= 70
x = const(velocity.walk.back.x)

[State 20, 3]
type = ChangeAnim
triggerall = vel x > 0
trigger1 = Anim != 20 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 20

[State 20, 4]
type = ChangeAnim
triggerall = vel x < 0
trigger1 = Anim != 21 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 21

[State 20]
type = ChangeState;人物進入預定位置後便回站立 state
triggerall = Var(59)
trigger1 = P2BodyDist X > 70
trigger1 = P2BodyDist X < 90
trigger2 = P2MoveType = A;敵方在攻擊而人物向後行
trigger2 = Vel X <= 0 ;就回 state 0, 否則會出現攻擊向後行而不防守的情況
trigger3 = RoundState = 3;戰鬥完結
trigger4 = Vel X = 0;以防萬一, 沒什麼實際用途
trigger4 = Anim != 0
value = 0

只要大家改變不同的數值就可令 ai 行到不同的距離.

順手介紹如何阻止 ai 跳躍.
在 state 40 的最上加入以下的東西:
[State 40]
type = ChangeState
trigger1 = Var(59)
trigger1 = Pos Y = 0;以防是空中跳躍
trigger1 .....;可以自行加入容許 ai 跳躍的 trigger
value = 0
ctrl = 1
如希望 ai 能自動跳躍:
[State -1]
type = ChangeState
triggerall = Var(59)
triggerall = Ctrl
triggerall = StateType != A
triggerall = StateNo != 40
trigger1 = ;其他命令 ai 跳的 trigger
value = 40
要記得在 state 40 中阻止 ai 跳躍時指明是否 ai 跳躍. 似如:
trigger1 = p2movetype = a;是跳的 trigger
那麼容許跳的 trigger 就是:
trigger1 = p2movetype != a
簡單來說就是把跳的 not 了就是阻止跳的 trigger.


自動步行完. 回首頁