「AIガードテンプレ」の編集履歴(バックアップ)一覧はこちら
AIガードテンプレ - (2008/02/17 (日) 22:00:08) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
・ガードステートについて 最終更新12/12
これらはあくまでテンプレです。
&color(red){必ずRandomやP2BodyDistなどのトリガーを用いて調整して下さい。}
特にキャラのコンセプトなどに合わせることは重要だと思います。
あるいは紙装甲だからその分ガードを堅く・・・などといった配慮による調整もありますが。
けどまあ立ち回りや切り返しなどがちゃんと出来ていたらあまり堅くなくても大丈夫な気はするのですけど。
『StateDef 120用ステート』
&italic(){&u(){EnemyNear,HitDefAttr中心のステート}}
[屈み移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
(ChangeState専用)TriggerAll = Time > 0
Trigger1 = Enemy,NumProj > 0 || Enemy,NumHelper > 0
Trigger2 = EnemyNear,HitDefAttr = C,AA,AP || EnemyNear,HitDefAttr = SA,AP
Trigger3 = EnemyNear,HitDefAttr = S,AA
Trigger3 = EnemyNear,Time <= *
Trigger3 = EnemyNear,Vel Y <= 0
Trigger4 = EnemyNear,StateType != S
Trigger4 = EnemyNear,HitDefAttr = S,AA
Trigger4 = EnemyNear,Time > *
Trigger4 = EnemyNear,Vel Y <= 0
[立ち移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
(ChangeState専用)TriggerAll = Time > 0
Trigger1 = EnemyNear,HitDefAttr = A,AA
Trigger2 = EnemyNear,HitDefAttr = S,AA
Trigger2 = EnemyNear,Time > *
Trigger2 = EnemyNear,StateType = S
Trigger3 = EnemyNear,HitDefAttr = S,AA
Trigger3 = EnemyNear,Time <= *
Trigger3 = EnemyNear,Vel Y > 0
Trigger4 = EnemyNear,StateType != S
Trigger4 = EnemyNear,HitDefAttr = S,AA
Trigger4 = EnemyNear,Time > *
Trigger4 = EnemyNear,Vel Y > 0
あとはこれを各ステート(130~155)用に修正すればOK。
TriggerAll = Time > 0はループを防ぐため急遽入れました。
ただしこれはあくまで暫定なのでもっと変わっていくと思います。
&italic(){&u(){P2StateType中心のステート}}
[屈み移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
Trigger1 = P2StateType = A
Trigger1 = EnemyNear,Vel Y = 0
Trigger2 = P2StateType = C
Trigger3 = P2StateType = S
Trigger3 = EnemyNear,Time < *
[立ち移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
Trigger1 = P2StateType = A
Trigger1 = EnemyNear,Vel Y != 0
Trigger2 = P2StateType = S
Trigger2 = EnemyNear,Time >= *
EnemyNear,HitDefAttrよりは簡易的になったがその分少しだけ対応できる攻撃が少なくなった。
まあ大して変わらないのですが。
これらのステートの補足説明は[[こちら>http://www30.atwiki.jp/niconicomugen/pages/33.html]]で。
ついでにガード移行等のトリガーを
[空中移動投げ対策(このステートは実験段階ですが)]
Type = ChangeState
Value = 任意のステート
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = A,AT
Trigger2 = Enemy,HitDefAttr = A,AT
Trigger2 = Enemy,Vel X > 0
[地上移動投げ対策(InGuardDistが有効なとき)]
Type = ChangeState
Value = 任意のステート 迎撃系がオススメ
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = SC,AT
Trigger2 = Enemy,HitDefAttr = SC,AT
Trigger2 = Enemy,Vel X > 0
[地上移動投げ対策(InGuardDistが無効なとき)]
Type = ChangeState
Value = 任意のステート 回避系がオススメ
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = !InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = SC,AT
Trigger2 = Enemy,HitDefAttr = SC,AT
Trigger2 = Enemy,Vel X > 0
[ガード移行]
Type = ChangeState
Value = ガードステート (120が安定するかも)
TriggerAll = AIフラグON
TriggerAll = Ctrl
Trigger1 = InGuardDist || P2BodyDist X = [-40,10] 裏周り対策(保険)
Trigger1 = EnemyNear,HitDefAttr = SCA,AA,AP
Trigger2 = Enemy,NumProj > 0
Trigger3 = !InGuardDist
Trigger3 = EnemyNear,HitDefAttr != SCA,NT,ST,HT
Trigger3 = P2BodyDist X < 0 裏周り対策
突進系対策
Trigger4 = !InGuardDist
Trigger4 = EnemyNear,Vel X > 0
Trigger4 = EnemyNear,HitDefAttr = SC,AA
近距離ヘルパー対策
Trigger5 = InGuardDist || (EnemyNear,MoveType = A && (EnemyNear,P2BodyDist X = [-10,120]))
Trigger5 = Enemy,NumHelper > 0
もしくは
[ガード移行]
Type = ChangeState
Value = ガードステート
TriggerAll = AIフラグON
TriggerAll = Ctrl
Trigger1 = InGuardDist
Trigger2 = !InGuardDist
Trigger2 = P2BodyDist X = [-40,10]
Trigger2 = EnemyNear,MoveType = A
Trigger3 = !InGuardDist
Trigger3 = EnemyNear,Vel X > 0
Trigger3 = EnemyNear,HitDefAttr = SC,AA
大概はInGuardDistだけでもいけますがそれだけでは無理なものもあるのでそれに対してTrigger2以降があるわけです。
・ガードステートについて 最終更新2008 2/17
これらはあくまでテンプレです。
&color(red){必ずRandomやP2BodyDistなどのトリガーを用いて調整して下さい。}
特にキャラのコンセプトなどに合わせることは重要だと思います。
あるいは紙装甲だからその分ガードを堅く・・・などといった配慮による調整もありますが。
けど立ち回りや切り返しなどがちゃんと出来ていたらあまり堅くなくても大丈夫な気はします。
『StateDef 120用ステート』
&italic(){&u(){EnemyNear,HitDefAttr中心のステート}}
[屈み移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
(ChangeState専用)TriggerAll = Time > 0
Trigger1 = Enemy,NumProj > 0 || Enemy,NumHelper > 0
Trigger2 = EnemyNear,HitDefAttr = C,AA,AP || EnemyNear,HitDefAttr = SA,AP
Trigger3 = EnemyNear,HitDefAttr = S,AA
Trigger3 = EnemyNear,Time <= *
Trigger3 = EnemyNear,Vel Y <= 0
Trigger4 = EnemyNear,StateType != S
Trigger4 = EnemyNear,HitDefAttr = S,AA
Trigger4 = EnemyNear,Time > *
Trigger4 = EnemyNear,Vel Y <= 0
[立ち移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
(ChangeState専用)TriggerAll = Time > 0
Trigger1 = EnemyNear,HitDefAttr = A,AA
Trigger2 = EnemyNear,HitDefAttr = S,AA
Trigger2 = EnemyNear,Time > *
Trigger2 = EnemyNear,StateType = S
Trigger3 = EnemyNear,HitDefAttr = S,AA
Trigger3 = EnemyNear,Time <= *
Trigger3 = EnemyNear,Vel Y > 0
Trigger4 = EnemyNear,StateType != S
Trigger4 = EnemyNear,HitDefAttr = S,AA
Trigger4 = EnemyNear,Time > *
Trigger4 = EnemyNear,Vel Y > 0
あとはこれを各ステート(130~155)用に修正すればOK。
TriggerAll = Time > 0はループを防ぐため急遽入れました。
ただしこれはあくまで暫定なのでもっと変わっていくと思います。
&italic(){&u(){P2StateType中心のステート}}
[屈み移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
Trigger1 = P2StateType = A
Trigger1 = EnemyNear,Vel Y = 0
Trigger2 = P2StateType = C
Trigger3 = P2StateType = S
Trigger3 = EnemyNear,Time < *
[立ち移行ステート]
TriggerAll = AIフラグON
TriggerAll = StateType != A
Trigger1 = P2StateType = A
Trigger1 = EnemyNear,Vel Y != 0
Trigger2 = P2StateType = S
Trigger2 = EnemyNear,Time >= *
EnemyNear,HitDefAttrよりは簡易的になったがその分少しだけ対応できる攻撃が少なくなります。
まあ大して変わらないのですが。
これらのステートの補足説明は[[こちら>http://www30.atwiki.jp/niconicomugen/pages/33.html]]で。
ついでにガード移行等のトリガーを
[空中移動投げ対策(このステートは実験段階ですが)]
Type = ChangeState
Value = 任意のステート
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = A,AT
Trigger2 = Enemy,HitDefAttr = A,AT
Trigger2 = Enemy,Vel X > 0
[地上移動投げ対策(InGuardDistが有効なとき)]
Type = ChangeState
Value = 任意のステート 迎撃系がオススメ
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = SC,AT
Trigger2 = Enemy,HitDefAttr = SC,AT
Trigger2 = Enemy,Vel X > 0
[地上移動投げ対策(InGuardDistが無効なとき)]
Type = ChangeState
Value = 任意のステート 回避系がオススメ
TriggerAll = AIフラグON
TriggerAll = Ctrl
TriggerAll = !InGuardDist
Trigger1 = EnemyNear,Vel X > 0
Trigger1 = EnemyNear,HitDefAttr = SC,AT
Trigger2 = Enemy,HitDefAttr = SC,AT
Trigger2 = Enemy,Vel X > 0
[ガード移行]
Type = ChangeState
Value = ガードステート (120が安定するかも)
TriggerAll = AIフラグON
TriggerAll = Ctrl
Trigger1 = InGuardDist || Abs(P2BodyDist X) < 40
Trigger1 = EnemyNear,HitDefAttr = ,AA,AP
Projectile形式飛び道具対策(別にProjectileそのものが防げるようになるわけではない。)
Trigger2 = InGuardDist
Trigger2 = Enemy,NumProj > 0
突進系対策
Trigger3 = !InGuardDist
Trigger3 = EnemyNear,Vel X > 0
Trigger3 = EnemyNear,HitDefAttr = SC,AA
もしくは
[ガード移行]
Type = ChangeState
Value = ガードステート
TriggerAll = AIフラグON
TriggerAll = Ctrl
Trigger1 = InGuardDist
Trigger2 = !InGuardDist
Trigger2 = Abs(P2BodyDist X) < 40
Trigger2 = EnemyNear,MoveType = A
Trigger3 = !InGuardDist
Trigger3 = EnemyNear,Vel X > 0
Trigger3 = EnemyNear,HitDefAttr = SC,AA
二ヶ月近くほったらかした結果色々と消しました。
というのもこれ以上はもはや趣味の範囲で追加するべきものになるので。
まず裏周り対策はAbs(P2BodyDist X) < 40でなんとかすることにしました。
ちょっと正の値が多すぎないかとも思いますがまあこれぐらいで。
P2Distの方が安定する気がしないでもない。
あと趣味の範囲の他にも誤動作を防ぐというのもあります。
今のところそんなものがあるのかは知りませんが。
ガードが甘くなっても気にしない。