BGMに合わせた演出について

ホーム フォーラム CF2.5使用法全般 BGMに合わせた演出について

  • このトピックには1件の返信、2人の参加者があり、最後にASDにより7年、 10ヶ月前に更新されました。
2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #1306
    テンキョー
    ゲスト

    BGMに合わせてパーティクルなどを表示する演出を組もうとしています。
    ですが、PCのスペックによってか、環境によっては演出が音とズレてしまうことがわかりました。

    例えばCF2.5でリズムゲームを作る場合のチュートリアルなどがありましたら参考になるかなと思っているのですが、そういったものはありますでしょうか。。。
    「マシン速度に依存しない」や「タイマーベース動作」などがポイントになってくるのではないかと想像しているのですが、具体的にどう対応していいかが曖昧なので、ご教授いただければ幸いです。

    #1312
    ASD
    キーマスター

    >>テンキョーさん
    サウンドの経過はミリ秒単位、アプリの動作はフレーム単位で管理と異なっているものを同期させようというのですから、基本的には「処理落ちしていない」ことを前提としなければキリがありません。
    とりあえず、BGMの経過位置に合わせて補正しながらフレーム数を刻むサンプルを作成してみました。ただし、処理落ち等で遅れた分のフレーム数は一気に加算されるため、その間の値を条件にしていたイベントは無視されてしまう点にご注意下さい。あくまで、最終的な経過フレーム数は処理状態に関わらず一致する、というだけのものです。

    ちなみに・・・
    ■『マシン速度に依存しない』『タイマーベース動作』の違いについて

    ・『マシン速度に依存しない』:処理落ちが発生すると、表示するフレームを間引いてフレームレートを回復させる処理です。

    ・『タイマーベース動作』:見た目の動作がプロパティで指定したフレーム数を基準とした動作速度になるように、オブジェクトの移動量やアニメーション速度などを調整する処理です。こちらは、動作中のFPSがプロパティの設定値より高い場合には移動量をやアニメ速度を落とし、処理落ちした場合は移動量をやアニメ速度を上げます。ただし、こちらはフレームレートの回復は行われず、あくまで見た目の動作速度を補正する処理です。

    なお、『タイマーベース動作』が適用されるのは、オブジェクトの標準動作とアニメ速度のみで、イベントの実行間隔(例えば『常に実行』など)はフレームベースのままなので、完全にタイマーベースで動作するアプリの作成は不可能ではないでしょうが難しいです。

    タイマーベースの場合、オブジェクトの移動速度自体を変えているため(設定値が変わる訳ではありません)、処理状態によっては座標位置が異なる場合があり、イベントで指定した座標に止まらずイベントが動作しない、ということが起こりえます。『マシン速度に依存しない』は画面更新回数を減らして処理を軽減するもので、移動速度などを変えているわけではないのでそのようなことは起こりません。

    – サンプルプログラム
    https://blog.clickteam.jp/wp-content/uploads/2016/07/cf25_blog_2016-07-17_frames_calculate_by_sound_position.zip

2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。