【解決済み】進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

返信する
viv1124
記事: 11
登録日時: 2024年2月22日(木) 18:08

【解決済み】進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

投稿記事 by viv1124 »

進行ごとにBGMがシームレスで変更される仕組みを作ろうと思っていますが、うまくいきません。
ブレスオブザワイルドの魔獣ガノン戦のイメージです。

①BGM切り替えポイントまでイベントが進行するとウェイトが発動
②再生位置が0か、22.5か45秒以上ならBGMの切り替えが行われる

現在、このように
スクリーンショット 2025-07-16 12.35.37.png
AudioManager._bgmBuffer.seek() でBGMの現在の再生位置を取得するスクリプトを入れ、BGM切り替えポイントまで行くとイベントのセルフスイッチでループ処理を入れています。
BGMのフェードはBGSと組み合わせて行おうと思っています。
スクリーンショット 2025-07-16 12.25.47.png
スクリーンショット 2025-07-16 12.28.13.png
ご存知の方がおりましたらご教示いただけますと幸いです。
最後に編集したユーザー viv1124 [ 2025年7月22日(火) 12:31 ], 累計 1 回
アバター
DoujinRuis
記事: 170
登録日時: 2022年10月25日(火) 10:59

Re: 進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

投稿記事 by DoujinRuis »

こんにちは、今回の件を動画で解説しているのでよかったら見てください
https://youtube.com/live/sJvj13xoQgk


プラグイン
/*:
* @target MZ
* @plugindesc BGMのシンクロポイントでの切り替えを支援するプラグインだよ♡
* @author サラ
*
* @help
* ◆ 使用方法:
* ・スクリプトで以下を使ってねっ♪
* BgmSyncChecker.isReady() // 同期ポイントに達しているか
* BgmSyncChecker.setSyncPoints([0, 22.5, 45]) // 同期タイミングを変更
*/

(() => {
class BgmSyncChecker {
static _syncPoints = [0, 22.5, 45]; // デフォルト同期ポイント(秒)

static isReady() {
const buffer = AudioManager._bgmBuffer;
if (!buffer || typeof buffer.seek !== "function") return false;
const current = buffer.seek();
console.log("[BgmSyncChecker] 現在の再生位置: " + current.toFixed(2) + "秒");
return this._syncPoints.some(point => Math.abs(current - point) < 0.3);
}

static setSyncPoints(points) {
if (Array.isArray(points)) {
this._syncPoints = points;
const buffer = AudioManager._bgmBuffer;
if (buffer && typeof buffer.seek === "function") {
const current = buffer.seek();
console.log("[BgmSyncChecker] 同期ポイント更新:", points);
} else {
console.warn("[BgmSyncChecker] BGMがまだ再生されていないか、seekが無効です!");
}
}
}
}

window.BgmSyncChecker = BgmSyncChecker;
})();
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
viv1124
記事: 11
登録日時: 2024年2月22日(木) 18:08

Re: 進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

投稿記事 by viv1124 »

DoujinRuisさん
いつもありがとうございます。お返事が遅くなってしまい申し訳ございません。
プラグインの作成と、解説動画まで作成していただき本当にありがとうございます…!
無事に理想のシームレスに変更できる仕組みが作れました(TT)ずっと悩んでいたので本当に助かりました、ありがとうございます!
こちらのプラグインを使用させていただき有料ゲームを公開したいと考えているのですが、ライセンスに関して(商用利用の場合は購入必要など)教えていただけますと幸いです。
アバター
DoujinRuis
記事: 170
登録日時: 2022年10月25日(火) 10:59

Re: 【解決済み】進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

投稿記事 by DoujinRuis »

いえいえ、好きに使ってください
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH

普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
viv1124
記事: 11
登録日時: 2024年2月22日(木) 18:08

Re: 【解決済み】進行ごとにBGMがシームレスで変更される仕組みを作りたい(音ハメ)

投稿記事 by viv1124 »

そう言っていただきましてありがとうございます!
改めまして、回答と素敵なプラグインの作成ありがとうございましたm(__)m
返信する

“MZ:質問”に戻る