Skip to content

効果音・BGM を再生する

音声アセットは g.AudioAsset#play() メソッドを用いて再生することができます。

DANGER

Google Chrome や iOS 上の Safari ではユーザ操作 (クリックなど) があるまで音が鳴らないという仕様があります。ゲームの開始直後から BGM を再生するような場合は最初に一度以上ユーザ操作 (クリックなど) をさせるような作りにしてください。詳細は Tips » よくある落とし穴 » 一部の環境でゲーム開始時に自動的に音声が再生されない を参照してください。

凡例

javascript
scene.asset.getAudio("/audio/sound1").play(); // ファイルパスが "/audio/sound1" の音声アセットが再生される

音声アセットは play() メソッドで再生できます。 効果音として登録されたアセットは一度だけ、BGM として登録されたアセットはループ再生されます (後述)。

利用例

次のコンテンツでは、「SE」の矩形をクリックすると効果音が、「BGM」の矩形をクリックするとが BGM が再生されます。

詳細

Akashic Engine で音声を扱うには、音声ファイルをアセットとして game.json に登録する必要があります。 音声ファイルは次のいずれかの組み合わせで用意する必要があります。これは、Web ページで音を再生する際に、利用可能な形式がブラウザごとに異なっているためです。

  • Ogg Vorbis 形式 (.ogg) と M4A 形式 (.m4a)
  • Ogg Vorbis 形式 (.ogg) と AAC 形式 (.aac)

音声ファイルを audio/ ディレクトリ (または assets/ ディレクトリ) に配置して akashic scan asset を実行するとアセットとして game.json に登録されます。 音声アセットは全て効果音 ("sound") として登録されます。BGM (ループ再生する) としたい場合は game.json の対応するアセットを探して systemId: "sound" になっている箇所を systemId: "music" に変更してください。例えば以下のアセット ID "bgm1" を BGM としたい場合以下のように編集します。

diff
"bgm1": {
  "type": "audio",
  "path": "audio/bgm1",
-  "systemId": "sound",
+  "systemId": "music",
  "duration": 36227
}

音声アセットの再生・停止はシーンの読み込み後に行う必要があります。このシーンの読み込み完了のタイミングを知るには scene.onLoad トリガーを利用します。 シーン内で読み込まれている音声アセットは scene.asset.getAudioById()scene.asset.getAudio() で取得できます。アセットはシーンの生成時に assetIds または assetPaths で指定して読み込ませることができます。

javascript
const scene = new g.Scene({ game: g.game, assetPaths: ["/audio/sound1"] }); // シーン生成時にそのシーンで利用する音声アセットを予め指定する
scene.onLoad.add(() => {
  // 中略
  const sound1 = scene.asset.getAudio("/audio/sound1"); // ファイルパスが "/audio/sound1" の音声アセットを取得
  scene.onPointDownCapture.add(() => {
    sound1.play(); // 画面 をクリック・タップしたときに sound1 を再生する
  });
});

Ogg Vorbis 形式 と M4A 形式の複数の音声ファイルを用意するために、complete-audioを利用することができます。これは .wav, .mp4, .mp3, .ogg, .aac, .m4a のどれか一つのファイルを与えると、Akashic Engine で必要な形式のファイルを一揃え生成するツールです。

関連情報