2D / 3D ゲームを作成できる無料・オープンソースの軽快なゲームエンジン「Godot Engine 4」で、BGM を常にループ再生するための手順を紹介します。
![](https://compota-soft.work/wp1/wp-content/uploads/2024/02/GodotEngine4.2.1-トップページの一部-1024x637.png)
※この記事の内容は、アプリ タップ The 宝箱 の開発でも使用しています。
※ GodotEngine のバージョンは 4.1.2 です。 .NET 版ではありません。
※「いらすとや」様の画像を使用しています。
※「ふい字」フォントを使用しています。
※「魔王魂」様のサウンドを動画内で使用しています。
※「無料効果音で遊ぼう!」様のサウンドを動画内で使用しています。
※記事で紹介するスクリプト / プログラム / コードは自己責任で使用してください。
前回の記事
前回は、動的に作成したコインや宝石の画像を表示するノードの表示順を設定する2つの方法を紹介して、宝石の方が常に手前に表示されるようにしました。
サウンドファイルのプロジェクトへの追加
ファイルシステムドックで sound フォルダを作成して、それを選択した状態でそこにエクスプローラのBGM 用のサウンドファイルをドラッグ&ドロップしてプロジェクトに追加します。
追加した BGM 用のサウンドファイルは以下です。
![Godot4 TapTheTakarabako サウンドファイル群をファイルシステムドックに作成したsoundフォルダにD&Dして追加します.](https://compota-soft.work/wp1/wp-content/uploads/2024/03/Godot4-TapTheTakarabako-サウンドファイル群をファイルシステムドックに作成したsoundフォルダにD&Dして追加します.png)
AudioStreamPlayer2D ノードの作成と Stream 音源の設定
メインのシーンでルートノードを右クリックして表示されるメニュー「子ノードを追加」を選択します。
「Node を新規作成」ダイアログで AudioStreamPlayer2D を選択して「作成」ボタンを押します。
※今回は 2D のゲームなので AudioStreamPlayer2D を選択しましたが、以前に AudioStreamPlayer でも 2D ゲームを作成したのでそちらでも問題ないと思います。
![Godot4 TapTheTakarabako メインシーンに子ノードとしてBGMを再生する AudioStreamPlayer2D ノードを作成します.](https://compota-soft.work/wp1/wp-content/uploads/2024/03/Godot4-TapTheTakarabako-メインシーンに子ノードとしてBGMを再生する-AudioStreamPlayer2D-ノードを作成します.png)
作成したノードを BGM にリネームして選択した状態で、インスペクタードックの Stream プロパティに、先ほど追加した BGM 用のサウンドファイルをファイルシステムドックからドラッグ&ドロップで設定します。
![Godot4 TapTheTakarabako BGMを再生するAudioStreamPlayer2DノードのStreamプロパティにサウンドファイルをD&Dします](https://compota-soft.work/wp1/wp-content/uploads/2024/03/Godot4-TapTheTakarabako-BGMを再生するAudioStreamPlayer2DノードのStreamプロパティにサウンドファイルをD&Dします.png)
BGM のループ設定
追加したサウンドファイルのインポート時の設定でループ再生をするかどうかを決められます。
既定ではループしない設定なので、変更したい場合はファイルシステムドックのそのサウンドファイルをダブルクリックします。
「オーディオストリームインポーター」ダイアログでループの「有効」にチェックを入れて「再インポート」ボタンを押すと、それを AudioStreamPlayer2D で再生するときに自動的にループ再生されます。
![Godot4 ループ再生の設定はサウンドファイルを選択してインポートドックでも行えます.](https://compota-soft.work/wp1/wp-content/uploads/2024/03/Godot4-サウンドのループはサウンドファイルの設定でループの有効をチェックして再インポートすると自動的にループ再生に変わります.png)
ファイルシステムドックでサウンドファイルを選択した状態で、インポートドックを開いても同様に設定をしたり確認ができます。
![Godot4 ループ再生の設定はサウンドファイルを選択してインポートドックでも行えます.](https://compota-soft.work/wp1/wp-content/uploads/2024/03/Godot4-ループ再生の設定はサウンドファイルを選択してインポートドックでも行えます.png)
GD スクリプトから AudioStreamPlayer2D ノードの音楽を再生
先ほど BGM (AudioStreamPlayer2D クラス) ノードを配置したシーンのルートノードなどに割り当てた GD スクリプトで以下のように _ready イベント関数内で BGM を再生する文を入力すると、ゲーム開始時に Stream プロパティに割り当てた BGM が再生されます。
$名前で、シーンに配置したその名前のノードにアクセスして、 AudioStreamPlayer2D の Stream を再生する関数 play を呼び出しています。
_ready はそのノードがシーンに配置された直後に呼び出されるイベント関数なので、メインのシーンの場合は、メインのシーンが再生された直後に呼び出されます。
# Called when the node enters the scene tree for the first time.
func _ready():
# BGM を再生します。
$BGM.play()
return
テスト
F6 キーでメインのシーンを再生すると BGM が再生されました。
※数分聞いてループ再生も確認しました。
まとめ
今回は、2D / 3D ゲームを作成できる無料・オープンソースの軽快なゲームエンジン「Godot Engine 4」で、BGM を常にループ再生するための手順を紹介しました。
AudioStreamPlayer 系のノードをシーンに配置して、そのノードの Stream プロパティに mp3 などのサウンドファイルを設定することで、プロジェクトに追加した任意のサウンドファイルを再生できることがわかりました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- かわいいフリー素材集 いらすとや
- 魔王魂 | 無料で使える森田交一の音楽
- 無料効果音で遊ぼう!
- AudioStreamPlayer2D — Godot Engine (4.x)の日本語のドキュメント
- 【Godot4.x】BGMのクロスフェードサンプル | 2dgames.jp
- 【Godot Engine】サウンドファイルのループ設定 – えんどーめも
記事一覧 → Compota-Soft-Press
コメント