BACK

★☆ キャラ制作奮闘記 ☆★


(2003.07.14)
リバーサル・アタック?

mugenをPLAYしていて、
どんなにシビアなタイミングで起きあがりに無敵技を繰り出しても、潰されてしまうのは何故だろう?
・・・なんて疑問を抱いたことはないですか?

「それがmugenの仕様だから仕方がない」と諦めてしまうのも手ですが、折角キャラ作りをやってるんですし、足掻いてみようじゃないですか。
・・・てな訳で、今回のお題です。 なんか既に誰かがやってそうですが、まぁ小ネタということで。^-^;

まずはmugenで起きあがり無敵技がリバーサル足り得ない理由を考えてみましょうか。

その理由は、恐らくは少しでもキャラ作成をかじった事がある御仁ならすぐに思い至ることでしょうけど、 mugenにコマンド入力の受付、その仕様にあると言えるでしょう。

周知のように、コマンド入力を受け付けてくれるのは(特殊なキャンセルを除いて)自キャラがコントロール可能な状態の時のみです。
これの意味するところは、例えば起きあがりモーション中などにコマンド入力を行っても、起きあがり中はコントロール不可状態であるため、コマンドが有効となりません。
従って、現仕様にて起きあがりリバーサルを行うには、起きあがりモーションが終了して STATE 0 に移行した瞬間に、コマンド入力を完成させる必要があることになりますね。

・・・んなもん、物理的に不可能であることは、今更論ずるまでもないですよね。
要するに、現仕様では許されていないコマンドの先行入力ができれば、何とかなりそうな気がしません?
ちゅう訳で、うちの「拳」でやってみた内容を以下に解説いたします。

通常cmdファイルを記述する場合、


; 昇龍拳
[State -1, 1]
type = ChangeState
value = 1100
triggerall = command = "623x"
trigger1 = statetype = S
trigger1 = ctrl


みたいに書きますよね。
ここを一工夫する訳です。
例えばこんな感じ。

;昇龍拳(小)
[State -1, 1]
type       = Varset
trigger1   = Command = "623x"
v          = 0
value      = 1100


;必殺技発動(地上技)
[State -1, 0]
type = ChangeState
value = Var(0)
triggerall = Var(0) > 999
trigger1   = statetype = S || statetype = C
trigger1   = ctrl



上記が何をやっているかと言いますと、
○キャラの状態を問わず、コマンド入力が成立したなら飛び先の STATE No を Var へ格納。
○キャラがコントロール可能となった時、Var に STATE No がセットされていたなら、ChangeState実行
・・・てな感じです。
あとは、Varにセットされた内容を、一定時間でクリアするようにすれば、めでたく先行入力ロジックの完成です。
Var クリアのタイミング分だけ、先行入力できることになります。
(詳細は拳のcmdをご参照下さい。)

・・・・が、実はこれだけでは、「リバーサル」にはならないことに、後になって気づきました・・・^-^;

例えばいわゆる「着地昇龍拳」であれば、前述の細工でOKでしょう。
が、起きあがり中の無敵〜リバーサル技の無敵をつなぐためには、もう一工夫必要でした。

先行入力したコマンドが発動するのは、自キャラがコントロール可能な状態です。
この「コントロール可能な状態」というのがくせ者だったりする訳で。
「コントロール可能な状態」とは(殆どの場合) STATE 0 を意味しており、


ダウン状態  −>  起きあがりモーション  −>  STATE 0  −>  無敵技
(無敵)          (無敵)        (無敵解除)    (無敵)
(ctrl = 0)       (ctrl = 0)       (ctrl = 1)   (ctrl = 0)


起きあがり硬直がとけた瞬間にコマンドが発動するといっても、その一瞬、STATE 0 を通ってしまうことになり、結果、起きあがりの無敵からリバーサル技の無敵へ繋がらなくなってしまうことになる訳です。
COMMON1.CNS を参照して起きあがりモーションの記述を確認してみて下さい。
モーション終了時のChangeState先は、State 0 となっていることに気づくでしょう。

なので、前述のcmdファイルに、以下を追加してみます。


;必殺技発動(地上技)
[State -1, 0]
type = ChangeState
value = Var(0)
triggerall = Var(0) > 999
trigger1   = statetype = S || statetype = C
trigger1   = stateno = 5001               ; 喰らい回復
trigger1   = HitOver
trigger2   = statetype = S || statetype = C
trigger2   = stateno = 5011               ; 屈喰らい回復
trigger2   = HitOver
trigger3   = stateno = 5120               ; 起きあがり
trigger3   = AnimTime = 0


これを入れることで、起きあがり等のモーション終了と同時(ChangeState条件を満たした瞬間)に、先行入力してあった無敵技が発動することになります。
これなら State 0 を経由しないため、起きあがりの無敵〜発動技の無敵が切れ目なくつながり、めでたくリバーサル・アタックが成立と相成るのです。

見た目に派手さはないですが、たったこれだけのことでも随分と操作感が違ってくるでしょう。
起きあがりの攻防を楽しみたい方、お試しになられてはいかがでしょう?

というところで、今回はこれにて。


BACK