致命エフェクト


致命エフェクトとは

致命エフェクトは、撃墜されるほど強いふっとびを受けた時にキャラクターから出る赤・黒の稲光のことである。海外での名称は"Deadly Blow"。スマブラforで導入されたシステムである。

↓これ。

エフェクトは、バーストラインまでの距離に対してふっとびの初速が十分大きく撃墜が見込めるとき、ダメージを受けたフレームに発生する。 ずらしやベクトル変更は考慮されない。 また、メテオ攻撃ではエフェクトは出ない。

MSCスクリプトに記述されているのはエフェクトを発生させる処理のみである。判定はrpxファイル(システムの根幹を司る設定ファイル)の領域で行われているものと考えられる。


発生条件

致命エフェクトの発生条件は、
  1. 横/上方向のバースト見積もり計算式のいずれかを満たす
  2. 倒れふっとびである
見積もり計算式は以下。

  • Horizontal : L_x < E - F
    • L_x = distance to side blast line
    • E = V0_x * t2
    • F = a * cosθ * (t2'+1) * (2*t2-t2')

  • Vertical : L_y < A - B - C - D
    • L_y = distance to upper blast line
    • A = V0_y * t2
    • B = g * t1 * (t1+1) / 2
    • C = g * t1 * (t2-t1)
    • D = a * sinθ * (t2'+1) * (2*t2-t2')

  • Variables
    • V0 = initial horizontal/vertical launch speed
    • g = gravity
    • f = fallspeed
    • a = launch speed decay*1
    • t1 = int(f/g)
    • t2 = min(t_hitstun , t_stop)
    • t2' = int(t2)
      • t_hitstun = KB * 0.4*2
      • t_stop_x = V0_x / (a*cosθ)
      • t_stop_y = {V0_y - max(f, 2.4)} / (a*sinθ)

note: if(t1<t2), vertical conditional expression is here;
  • Vertical' : L_y < A - D'
    • D' = (g+a*sinθ) * (t2'+1) * (2*t2-t2')


式の意味

まず、「ふっとび硬直(t_hitstun)」と「飛行速度が0になるまでの時間見積もり(t_stop)」のうち、 短い方 を"バースト見積もり時間"(= t2)として選ぶ。

次に、見積もり時間になるまで速度を1Fごとに計算し足し上げていく。見積もり時間の小数点以下(t2-t2')については、(t2+1での速度)*(t2-t2')を足す。足し上がったものに対応するのが、条件式の E-F, または A-B-C-D で、これはキャラクターのふっとび距離の見積もりである。

そして、キャラクターの座標からバーストラインまでの距離Lとふっとび距離の見積もりを比較する。ふっとび距離の方が大きければ、致命エフェクトが発生する。


注意点・疑問点

max(f, 2.4)
上方向のふっとび速度が0になるまでの時間の式
t_stop_y = {V0_y - max(f, 2.4)} / (a*sinθ)
に出てくる値2.4は、「上バーストに必要な最低ふっとび速度:fighter_param_common_Name302」に対応していると思われる。が、この値を編集しても変化は無かった。そもそも落下速度が2.4を超えるキャラはいないのだが…

ふっとび硬直について
通常、ふっとび硬直はフレーム数として整数で表されるが、致命エフェクト判定式でのふっとび硬直(t1_hitstun)は、 小数点以下を含む

ふっとび硬直がバースト見積もり時間に使われると、 エフェクトがほとんど正しく機能しなくなる''。
致命エフェクト判定にふっとび硬直が絡んでいるのは、横バーストの見積もりの際、横移動入力がふっとび硬直後に利き始めることを算入する意図があると考えられる。しかし空中横移動速度が十分に上がるまでには時間差があるため、結局不正確なのは否めない。むらびと横Bのような必殺技緩和を持つキャラなら別たが。

落下速度計上の不備
「落下速度÷重力値」が割り切れない場合、落下速度が小さく見なされて 上方向への致命エフェクトが出やすくなる 。程度の差はあれ、ほとんどのキャラがこれに該当する。特にずれが大きいのがフォックスとファルコ、次いでロックマン、アイク、カムイ。計算式中で落下速度fを扱う項は「int(f/g)」の値しか参照しないため、割り切れなかったあまりの部分は無視されてしまうという仕組み。


致命エフェクトが正しく機能しない理由

箇条書き+一言。
  • ベクトル変更、ずらしが行われた
    • 大体はこれ。
  • キャラクターのふっとびモーションの影響
    • キャラ座標はキャラの足元を参照するのに対し、バースト判定にはモデルの腰付近のBoneが使われるため。
  • t2にふっとび硬直が使われた
    • 注意点・疑問点で指摘した通り。
  • 計算式がキャラ落下速度を正しく見積もっていないから
    • 注意点・疑問点で指摘した通り。


備考

  • 台の上に立っているとき、「キャラY座標 = 台のY座標 + 0.01」である。
  • 崖端に立っているとき、キャラX座標は崖端X座標よりも0.1程度内側になる。
  • 条件式の note: if(t1<t2) の部分は確認がやや不十分。めんどくさそう。


コメント

名前:
コメント:
最終更新:2018年05月17日 00:40

*1 fighter_param_common_Name290

*2 battle_object_Name11