AIガードテンプレ

「AIガードテンプレ」の編集履歴(バックアップ)一覧に戻る
AIガードテンプレ」を以下のとおり復元します。
・ガードステートについて  最終更新2008 4/13
これらはあくまでテンプレです。
&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よりは簡易的になったがその分少しだけ対応できる攻撃が少なくなります。
まあ大して変わらないのですが。
これらのステートの補足説明は[[こちら>ガードステート 補足説明]]で。


ついでにガード移行等のトリガーを

[空中移動投げ対策(このステートは実験段階ですが)]
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(P2Dist X) < 60
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(P2Dist X) < 60
Trigger2 = EnemyNear,MoveType = A
Trigger3 = !InGuardDist
Trigger3 = EnemyNear,Vel X > 0
Trigger3 = EnemyNear,HitDefAttr = SC,AA


裏周り対策をAbs(P2Dist X) < 60に変更しました。
InGuardDistの条件からしてP2Distの方が安定しそうなので。

復元してよろしいですか?