ページ 11

みょん弾幕で見られるスローモーション

Posted: 2010年6月13日(日) 21:38
by ft
こんにちは。
タイトル通り、妖夢の弾幕などでみられる強制スローモーションについてですが、どのような方法で実装できるでしょうか?
思い付いたものとしては、全ての速度、アングル等に係数を掛けることで実現出来そうなのですが、係数の管理が大変そうに見えます。
もっと良い管理方法はないでしょうか?

Re:みょん弾幕で見られるスローモーション

Posted: 2010年6月14日(月) 00:32
by jay
あれは僕も本気で考えたことがありますね、ややこし過ぎて挫折しましたがw
以下はその時考えたことです、参考にでもして下さい。


これは係数による数値の補正ではなく、あらかじめスロー時の処理をする関数を作っておくものです。

まずslow_flagなるものをグローバル変数で作りました。
これが0の時は通常通りの処理。
1の時は全体をスローにする処理、という具合です。

例えばキャラ移動の場合は
普段は移動キーが押されていると5ピクセルずつ。
slow_flagが1になった場合は移動量を半分に、するといった感じですね。


同じように敵の弾を管理する関数でも
slow_flagが0の時は通常の処理を、1の時は移動量を半分にとすれば理論上は実装出来ると思います。
全ての物から一定の割合で速度を引けば、弾のアングルに補正を掛ける必要もなくなるとおもいます。


slow_flagを1にする部分は、弾幕の関数でいいかと思われます。
龍神録風にいうなら
if (boss_shot.cnt == 100)
slow_flag = 1;

といった具合です。

探せばっもっと楽な方法もあるかもしれませんけどね。

Re:みょん弾幕で見られるスローモーション

Posted: 2010年6月14日(月) 00:41
by y
大雑把、というか、多分本家でも使われてる方法ですが、
60FPSの状態で、通常1フレームに一度更新するのを2フレームに一度にすれば、
結構楽に実装できると思います。

Re:みょん弾幕で見られるスローモーション

Posted: 2010年6月14日(月) 03:09
by Justy
>全ての速度、アングル等に係数を掛けることで実現出来そうなのですが、係数の管理が大変そうに見えます。
 大変なのは管理じゃなくて、係数から計算する方では?
 設計段階である程度システム側で吸収できるよう作っておくとか、サポート用のクラス・関数を作っておけば
少しは楽かもしれません。


>60FPSの状態で、通常1フレームに一度更新するのを2フレームに一度にすれば
 更新の処理負荷は高くなりますが、通常時は2回スロー時は1回更新する、でもいいですね。

Re:みょん弾幕で見られるスローモーション

Posted: 2010年6月14日(月) 12:29
by ft
ありがとうございます。
スローモーションといっても色んなやり方があるんですね。
yさんの方法は制御が簡単になりそうなのですが、
PSPに実装しようと考えているためJustyさんの言われるように処理速度が気になります。
今回はjayさんのように設計段階からスローを想定した構造を組み立てていこうかと思います。
みなさんどうもありがとうございました。