5:良く使われるトリガー

「5:良く使われるトリガー」の編集履歴(バックアップ)一覧はこちら

5:良く使われるトリガー」(2008/02/22 (金) 23:32:46) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

その他のtriggerや、より詳しくは、ググるか、和訳KFMを参照すること ----------- ctrl ----------- キー・コントロール可能状態 正確には「ctrl=1」と記述するが、省略可能なので省略 「ctrl=0」、または「!ctrl」だと、コントロール不能状態の場合、になる 正確には「command」の入力を受け付ける状態の可否を判断してる だが、AIの場合は、自由行動可否のフラグでしかない <注意点> triggerallに記述するときは、キャンセルの有無を確認する キャンセルを行う状態では、普通、ctrl=0(行動不能=操作不能)となってるため ----------- p2bodydist X = ** p2bodydist X <= ** p2bodydist X = [**,**] ----------- 自分から見て、相手とのX軸(横)の距離を測る 「X」を「Y」に変えれば、Y軸(縦)の距離も計れる Y軸の方はAIが細かくなっていくとX軸より重要になってくる。 負数は裏回りを判別するのに使う (めくり、や、緊急回避などで背後に回られた状態を指す) 大まかだが、投げや小足などのリーチの短い技なら10~20 普通の打撃技なら20~40 リーチの長い技なら40~80 超リーチの長い技なら90~160 mugenの表示画面はx=320 Y= 240なので、画面半分なら160となる(単位はpixel) だが、正確に数値を計る必要は無く、 見た目でもある程度判断出来るので、大まかに決定して、動作チェックを繰り返して微調整するのが望ましい なぜなら、実際に当たるかどうかは、相手側の当たり判定にも左右されるからだ どうしても正確に計りたいなら、該当する技のstatedefを調べ、使われてるanim番号をチェック (デバッグモードで、実際に技を出して確かめたり、mcm2,0などでSFFとAIRを読み込んで調べても良い) DEFファイルを開き、そこにAnimに指定されているairファイルを開き、該当するナンバーの ----- Clsn1: 3 Clsn1[0] = 24,-24, 8,-13  (始点X軸,始点Y軸,終点X軸,終点Y軸) Clsn1[1] = 23,-19, 45,-10 Clsn1[2] = 45,-11, 63, 0 ----- Clsn1を確かめ、始点X、または終点Xの最も大きい数字 上記の場合は、63がその攻撃の届く最大距離となる (ただし、該当するstatedefのhitdefのtrigger表記によっては無意味化するので、良く分からない内は、お勧めはしない)   <注意点> XやYは半角大文字にすること。じゃないとエラーが出る 同様に、XやYを付け忘れてもエラーとなる 「<=」の場合、負数も含めるので、相手や技によっては豪快な空振りが発生する ただし、それが「~っぽい」と判断するなら「=[*,*]」にする必要は無い ----------- vel X >= ** vel X = 0 vel Y <= ** ----------- 移動速度を計るためのもの X:正数だと前方に移動中。負数だと後方に移動中 Y:負数だと上昇中。正数だと落下中。 相手の移動速度を計る場合は、 ----------- enemynear,vel X > 0 enemynear,vel X =0 enemynear,vel Y < 0 ----------- などとすれば良い 対空技や降下技、昇り蹴りの中段狙いなどの判定に使われることが多い  <注意点> 相手や自分の移動速度は、設定や技などによって大幅に変わる よって「= [**,**]」を条件にするのお勧め出来ない(無論、しても問題はない) ----------- p2statetype = * ----------- 相手の状態を計る 「statetype」だと自分の状態となる また「enemynear,statetype = *」でも同様の効果がある (微妙に違うが、詳細は割愛) A:空中にいる状態。やられ中だろうと、地面から少しでも浮いてるとこの状態と見なされる S:地上で、立ってる状態 C:地上で、座ってる状態 L:fall属性(ダウンする)の攻撃を受け、倒れてる状態。落下やバウンド中、起き上がり直前も含まれてる ----------- p2movetype = * ----------- 相手の行動を計る 「movetype」だと自分の状態となる(まず使わない) また「enemynear,movetype = *」でも同様の効果がある (微妙に違うが、詳細は割愛) A:攻撃中。攻撃後の硬直なども含む(相手が含まないように設定してる場合は除く) H:食らい中。攻撃を受けてる状態。ガードやダウンも状態も含む I:その他。何もして無い。またはパワー貯めや挑発など(具体的な内容を計るのは、かなり難しいので割愛) ----------- random <= ** random < ** random = [**,**] ----------- 0~999の乱数を計る 数値を指定する事で、その数値が出た時にtriggerを発動させれる 乱数は1フレーム毎に変動(FPS60なら、1フレームは60分の1秒) (正確な事は分からないが、同じフレームでも、記述毎にばらつく模様) 経験則的に、randomのみをtriggerとした場合、50くらいでも、結構なの確率で使用する たまに程度でいいなら10とか20。場合によっては5とかで十分である ただし、他の条件と合わせた場合は、400~700が頃合である 注意点 randomの乱数は、数値が低い方が出やすいため「<99」と「>=900」だと、範囲は同じでも前者が出やすい また、カンフーアッパーに、random<=700 カンフー突き手にもrandom<=700とか、記述しても問題なく むしろ「優先順位」の方が重要である 優先順位は、mugen全体の仕様で、同条件の場合、先に(上方、上位位置)に記述したものが優先されることを意味する ステート番号(statedef)が重複したりした場合も、先に記述した方が適用され、後に記述した分は無視される (またcommon1.cnsなどcommonの優先順位は最低となる) 各種技(主にtriggerall)に、必ずいれることが推奨される(ただし、強AIなら必ずじゃなくても良い) ----------- MoveContact MoveReversed MoveHit time >= ** ----------- キャンセル条件に使用 ctrl=0。ようするに「ctrl」と併用すると機能しないので注意 相手に攻撃が当たってる状態 必ず、afterやstatenoと併用すること (そうしないと認識されない) MoveContact :攻撃が当たった場合(ヒット&ガード問わず) MoveReversed:攻撃がガードされた場合 MoveHit   :攻撃がヒットした場合 time     :現在のステートに入ってからの経過時間(空キャン用。元の技の記述をそのまま使用すること) 正確には、MoveContact >= 1 となるが、省略できるので書略 ------- trigger1 = !MoveContact ------- だと、攻撃が当たらなかった場合。となる  <注意点> MoveHitを多用すると、確定状況しか技をキャンセルしない事になるので、自重すること ----------- hitdefattr = ***,**,**,**,**,**,**,**,** ----------- 自分の現在のステートの「hitdef」の「attr」で定義された技の種類を判別する 相手(敵)の攻撃の種類を判別する場合は ----------- enemynear,hitdefattr = ***,**,**,**,**,**,**,**,** ----------- となる S:立ち状態 C:屈み状態 A:空中状態 N:ノーマル。通常技。 S;スペシャル。必殺技。 H:ハイパー。超必殺技。 A:アタック。打撃などの格闘攻撃 T:スロー。掴み技や投げ技 ----------- hitdefattr = SC,NT,ST ----------- や ----------- hitdefattr = A,HA,HT ----------- などと記述 最初にSCA、残りがNSHとATの組み合わせとなる 前者は、立ち、または屈み状態で、通常投げ、または必殺投げを使ってる場合、となり 後者は、空中で、超必殺技の打撃、または投げを使ってる場合、となる また、 ----------- hitdefattr = SC, NA, SA, HA ----------- だと、立ち、または屈み状態で、通常、必殺、超必殺を問わず、打撃技を出してる場合、となる  <注意点> hitdefattrもstatenoも、キャンセルを前提としているトリガーであるから、迂闊な削除はしないこと そうじゃないと、ありえないキャンセルが可能になる ----------- BackEdgeBodyDist <= ** BackEdgeBodyDist = [**,**] ----------- 自分から、背後の壁までの距離を計る 逆に、正面の壁までの距離なら「FrontEdgeBodyDist」を使う 画面端に追い詰められたときや、逆に追い詰めた時の判断に使用される 経験則的に、20前後で画面端と認識される場合が多い 30だと、スクロールが優先される場合が多い これは「ステージ」や「mugen」の設定により左右されるので、適当でも良い <注意点> ここで言う、壁は、画面端のことで、ステージの終点(始点)のことではない と言うより、ステージの終点や始点を判別するトリガーは存在しない ----------- RoundState = * ----------- ラウンドの状態 0だと、戦闘前のフィードイン中。1だと、イントロ中、2だと戦闘中、3だと戦闘終了直後、4だと勝利ポーズ中 と、なる  <注意点> triggerallに、これの2を定義して置かないと、戦闘開始前に動き出す「フライング」したり 戦闘終了後に、倒れた相手に攻撃し続けたり、逆に倒されてるのに、起き上がってきたりすることがある ----------- InGuardDist ----------- ガード可能状態 相手のCNSで定義された、攻撃に対してガードモーションを取る間合い、に入ってる事を判別する (「InGuardDist>=1」と同じ意味) 主にガードやブロッキング、シールドや緊急回避などに使われる ------- trigger1 = !InGuardDist ------- だと、間合いに入ってない場合となる (「InGuardDist=0」と同じ意味) ---- [[<前へ>4:AI製作開始]] 5:良く使われるトリガー [[次へ>>6:AIのサンプル]] [[さらに次へ>>>7:StCommonを弄った立ち回りの制御(ガード&エアリアルも含む)]]
その他のtriggerや、より詳しくは、ググるか、和訳KFMを参照すること ----------- ctrl ----------- キー・コントロール可能状態 正確には「ctrl=1」と記述するが、省略可能なので省略 「ctrl=0」、または「!ctrl」だと、コントロール不能状態の場合、になる 正確には「command」の入力を受け付ける状態の可否を判断してる だが、AIの場合は、自由行動可否のフラグでしかない <注意点> triggerallに記述するときは、キャンセルの有無を確認する キャンセルを行う状態では、普通、ctrl=0(行動不能=操作不能)となってるため ----------- p2bodydist X = ** p2bodydist X <= ** p2bodydist X = [**,**] ----------- 自分から見て、相手とのX軸(横)の距離を測る 「X」を「Y」に変えれば、Y軸(縦)の距離も計れる Y軸の方はAIが細かくなっていくとX軸より重要になってくる。 負数は裏回りを判別するのに使う (めくり、や、緊急回避などで背後に回られた状態を指す) 大まかだが、投げや小足などのリーチの短い技なら10~20 普通の打撃技なら20~40 リーチの長い技なら40~80 超リーチの長い技なら90~160 mugenの表示画面はx=320 Y= 240なので、画面半分なら160となる(単位はpixel) だが、正確に数値を計る必要は無く、 見た目でもある程度判断出来るので、大まかに決定して、動作チェックを繰り返して微調整するのが望ましい なぜなら、実際に当たるかどうかは、相手側の当たり判定にも左右されるからだ どうしても正確に計りたいなら、該当する技のstatedefを調べ、使われてるanim番号をチェック (デバッグモードで、実際に技を出して確かめたり、mcm2,0などでSFFとAIRを読み込んで調べても良い) DEFファイルを開き、そこにAnimに指定されているairファイルを開き、該当するナンバーの ----- Clsn1: 3 Clsn1[0] = 24,-24, 8,-13  (始点X軸,始点Y軸,終点X軸,終点Y軸) Clsn1[1] = 23,-19, 45,-10 Clsn1[2] = 45,-11, 63, 0 ----- Clsn1を確かめ、始点X、または終点Xの最も大きい数字 上記の場合は、63がその攻撃の届く最大距離となる (ただし、該当するstatedefのhitdefのtrigger表記によっては無意味化するので、良く分からない内は、お勧めはしない)   <注意点> XやYは半角大文字にすること。じゃないとエラーが出る 同様に、XやYを付け忘れてもエラーとなる 「<=」の場合、負数も含めるので、相手や技によっては豪快な空振りが発生する ただし、それが「~っぽい」と判断するなら「=[*,*]」にする必要は無い ----------- vel X >= ** vel X = 0 vel Y <= ** ----------- 移動速度を計るためのもの X:正数だと前方に移動中。負数だと後方に移動中 Y:負数だと上昇中。正数だと落下中。 相手の移動速度を計る場合は、 ----------- enemynear,vel X > 0 enemynear,vel X =0 enemynear,vel Y < 0 ----------- などとすれば良い 対空技や降下技、昇り蹴りの中段狙いなどの判定に使われることが多い  <注意点> 相手や自分の移動速度は、設定や技などによって大幅に変わる よって「= [**,**]」を条件にするのお勧め出来ない(無論、しても問題はない) ----------- p2statetype = * ----------- 相手の状態を計る 「statetype」だと自分の状態となる また「enemynear,statetype = *」でも同様の効果がある (微妙に違うが、詳細は割愛) A:空中にいる状態。やられ中だろうと、地面から少しでも浮いてるとこの状態と見なされる S:地上で、立ってる状態 C:地上で、座ってる状態 L:fall属性(ダウンする)の攻撃を受け、倒れてる状態。落下やバウンド中、起き上がり直前も含まれてる ----------- p2movetype = * ----------- 相手の行動を計る 「movetype」だと自分の状態となる(まず使わない) また「enemynear,movetype = *」でも同様の効果がある (微妙に違うが、詳細は割愛) A:攻撃中。攻撃後の硬直なども含む(相手が含まないように設定してる場合は除く) H:食らい中。攻撃を受けてる状態。ガードやダウンも状態も含む I:その他。何もして無い。またはパワー貯めや挑発など(具体的な内容を計るのは、かなり難しいので割愛) ----------- random <= ** random < ** random = [**,**] ----------- 0~999の乱数を計る 数値を指定する事で、その数値が出た時にtriggerを発動させれる 乱数は1フレーム毎に変動(FPS60なら、1フレームは60分の1秒) (正確な事は分からないが、同じフレームでも、記述毎にばらつく模様) 経験則的に、randomのみをtriggerとした場合、50くらいでも、結構なの確率で使用する たまに程度でいいなら10とか20。場合によっては5とかで十分である ただし、他の条件と合わせた場合は、400~700が頃合である 注意点 randomの乱数は、数値が低い方が出やすいため「<99」と「>=900」だと、範囲は同じでも前者が出やすい また、カンフーアッパーに、random<=700 カンフー突き手にもrandom<=700とか、記述しても問題なく むしろ「優先順位」の方が重要である 優先順位は、mugen全体の仕様で、同条件の場合、先に(上方、上位位置)に記述したものが優先されることを意味する ステート番号(statedef)が重複したりした場合も、先に記述した方が適用され、後に記述した分は無視される (またcommon1.cnsなどcommonの優先順位は最低となる) 各種技(主にtriggerall)に、必ずいれることが推奨される(ただし、強AIなら必ずじゃなくても良い) ----------- MoveContact MoveGuarded MoveHit time >= ** ----------- キャンセル条件に使用 ctrl=0。ようするに「ctrl」と併用すると機能しないので注意 相手に攻撃が当たってる状態 必ず、afterやstatenoと併用すること (そうしないと認識されない) MoveContact :攻撃が当たった場合(ヒット&ガード問わず) MoveGuarded:攻撃がガードされた場合 MoveHit   :攻撃がヒットした場合 time     :現在のステートに入ってからの経過時間(空キャン用。元の技の記述をそのまま使用すること) 正確には、MoveContact >= 1 となるが、省略できるので書略 ------- trigger1 = !MoveContact ------- だと、攻撃が当たらなかった場合。となる  <注意点> MoveHitを多用すると、確定状況しか技をキャンセルしない事になるので、自重すること ----------- hitdefattr = ***,**,**,**,**,**,**,**,** ----------- 自分の現在のステートの「hitdef」の「attr」で定義された技の種類を判別する 相手(敵)の攻撃の種類を判別する場合は ----------- enemynear,hitdefattr = ***,**,**,**,**,**,**,**,** ----------- となる S:立ち状態 C:屈み状態 A:空中状態 N:ノーマル。通常技。 S;スペシャル。必殺技。 H:ハイパー。超必殺技。 A:アタック。打撃などの格闘攻撃 T:スロー。掴み技や投げ技 ----------- hitdefattr = SC,NT,ST ----------- や ----------- hitdefattr = A,HA,HT ----------- などと記述 最初にSCA、残りがNSHとATの組み合わせとなる 前者は、立ち、または屈み状態で、通常投げ、または必殺投げを使ってる場合、となり 後者は、空中で、超必殺技の打撃、または投げを使ってる場合、となる また、 ----------- hitdefattr = SC, NA, SA, HA ----------- だと、立ち、または屈み状態で、通常、必殺、超必殺を問わず、打撃技を出してる場合、となる  <注意点> hitdefattrもstatenoも、キャンセルを前提としているトリガーであるから、迂闊な削除はしないこと そうじゃないと、ありえないキャンセルが可能になる ----------- BackEdgeBodyDist <= ** BackEdgeBodyDist = [**,**] ----------- 自分から、背後の壁までの距離を計る 逆に、正面の壁までの距離なら「FrontEdgeBodyDist」を使う 画面端に追い詰められたときや、逆に追い詰めた時の判断に使用される 経験則的に、20前後で画面端と認識される場合が多い 30だと、スクロールが優先される場合が多い これは「ステージ」や「mugen」の設定により左右されるので、適当でも良い <注意点> ここで言う、壁は、画面端のことで、ステージの終点(始点)のことではない と言うより、ステージの終点や始点を判別するトリガーは存在しない ----------- RoundState = * ----------- ラウンドの状態 0だと、戦闘前のフィードイン中。1だと、イントロ中、2だと戦闘中、3だと戦闘終了直後、4だと勝利ポーズ中 と、なる  <注意点> triggerallに、これの2を定義して置かないと、戦闘開始前に動き出す「フライング」したり 戦闘終了後に、倒れた相手に攻撃し続けたり、逆に倒されてるのに、起き上がってきたりすることがある ----------- InGuardDist ----------- ガード可能状態 相手のCNSで定義された、攻撃に対してガードモーションを取る間合い、に入ってる事を判別する (「InGuardDist>=1」と同じ意味) 主にガードやブロッキング、シールドや緊急回避などに使われる ------- trigger1 = !InGuardDist ------- だと、間合いに入ってない場合となる (「InGuardDist=0」と同じ意味) ---- [[<前へ>4:AI製作開始]] 5:良く使われるトリガー [[次へ>>6:AIのサンプル]] [[さらに次へ>>>7:StCommonを弄った立ち回りの制御(ガード&エアリアルも含む)]]

表示オプション

横に並べて表示:
変化行の前後のみ表示: