ページ 11

BGMと文字表示を合わせたいのですが、処理が遅い(重い)時などにずれてしまいます。

Posted: 2011年1月03日(月) 02:28
by 化猫
dixqさんが動画をアップしているように
[nico]http://www.nicovideo.jp/watch/sm4687447[/nico]
自分もBGMと合わせてタイトル画面で文字を表示させようとしているのですが、この動画では後から音を合わせているのでしょうか?

ゲームとしてプレイする際、確実にずれないようにプログラムで出来るのでしょうか?
実際に弾幕に合わせる訳ではないので、それよりは簡単かなと思うのですが、どのように制御すればいいのか分かりません。

自分が書いたプログラムでは、普通にBGMを再生し
毎回 title (int型変数) に1ずつ足していき、その数値が指定の数以上になったら文字を表示するようにしています。

一回ぴったり合ったので、タイトル画面は完成だと思ったのですが、別の日に起動してみるとちょっとずれていて・・・。

DXライブラリのリファレンスページを見ましたが、それらしい項目はありませんでした。

この方法を利用すれば、音ゲーなどにも応用できるのではないかと考えています。
どうかご教示宜しくお願い致します。

また、そのような方法が解説されているサイト、書籍等がありましたら紹介して頂きたいです。

Re: BGMと文字表示を合わせたいのですが、処理が遅い(重い)時などにずれてしまいます。

Posted: 2011年1月03日(月) 14:07
by softya(ソフト屋)
試してないですが、GetCurrentPositionSoundMem()で音楽の再生位置は得られると思います。
リファレンスの方はリンクされてないし、説明が間違ってますね(SetCurrentPositionSoundMemと混乱)。
http://homepage2.nifty.com/natupaji/DxL ... html#R8N15

Re: BGMと文字表示を合わせたいのですが、処理が遅い(重い)時などにずれてしまいます。

Posted: 2011年1月03日(月) 19:26
by 化猫
説明が違っているので、最初はどうすればいいのか分かりませんでした。
再生しながらは使えないという部分が頭に残っていて、値を得ても0のままで・・・。

http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=1714
こちらのページを参考にして、再生しながら使えることが分かりました。

ミリ秒で扱えて、使いやすかったので GetSoundCurrentTime(bgm_handle) を使用しました。

無事思った通りに動かすことが出来ました。
本当にありがとうございました。