SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Godot Engine 2Dゲーム開発入門

【Godot Engine 2Dゲーム制作 Part3】タイトル画面を作ってBGMを追加しよう!

Godot Engine 2Dゲーム開発入門 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

BGMの管理

BGMのグローバル変数を作ろう

 シーンマネージャーと同じような手法でBGMを管理します。

 まず、トップメニューの「シーン」>「新規シーン」で、新しいシーンを作ります。ルートノードは「AudioStreamPlayer」にして名前を「BGM」に変更します。

 「Ctrl+S」で保存するパスはres://singleton/bgm.tscnとします。

 「BGM」の「インスペクター」ドックには、次のような変更を加えます。

  • 「AudioStreamPlayer」
    • 「Stream」に、res://res/sound/maou_loop_fantasy_07.oggをドロップ。
    • 「Parameters」>「Looping」と「オン」にチェック。
BGM
BGM

 次にトップメニューの「プロジェクト」>「プロジェクト設定」を選び、「プロジェクト設定」ダイアログを開きます。そして「グローバル」タブ>「自動読み込み」タブを表示します。

 「パス」の横にフォルダーのアイコンがあるのでクリックします。そして、作成したres://singleton/bgm.tscnを選択して、画面右端の「追加」ボタンを押します。

 そうすると、「名前」が「Bgm」、「パス」が「res://singleton/bgm.tscn」という項目が追加されます。

グローバル
グローバル

BGMマネージャーのグローバル変数を作ろう

 「ファイルシステム」ドックのres://singletonフォルダーを右クリックして、「新規作成」>「スクリプト」を選びます。

 「スクリプト作成」ダイアログが開きますので、「テンプレート」のチェックボックスを外し、「パス」をres://singleton/bgm_manager.gdにして「作成」ボタンを押します。

 次にトップメニューの「プロジェクト」>「プロジェクト設定」を選び、「プロジェクト設定」ダイアログを開きます。そして「グローバル」タブ>「自動読み込み」タブを表示します。

 「パス」の横にフォルダーのアイコンがあるのでクリックします。そして、作成したres://singleton/bgm_manager.gdを選択して、画面右端の「追加」ボタンを押します。

 そうすると、「名前」が「BgmManager」、「パス」が「res://singleton/bgm_manager.gd」という項目が追加されます。

グローバル
グローバル

BGMを管理するスクリプト

 bgm_manager.gdをダブルクリックして「Script」ビューで開きます。bgm_manager.gdに、次のようにBGM管理をおこなうプログラムを書きます。

bgm_manager.gd
extends Node


# BGMの開始
func start_bgm() -> void:
	if Bgm.playing == false:
		Bgm.play()


# BGMをオフ
func bgm_off() -> void:
	var tween = create_tween()
	tween.tween_property(Bgm, "volume_linear", 0, 0.5)
	tween.play()


# BGMをオン
func bgm_on() -> void:
	var tween = create_tween()
	tween.tween_property(Bgm, "volume_linear", 1, 0.5)
	tween.play()

 このファイルには3つの関数があります。それぞれ、次の処理をおこないます。

  • start_bgm関数
    • BGMが再生中でなければ、BGMを再生する。
  • bgm_off関数
    • BGMのフェードアウト。BGMの音量を0.5秒かけて下げる。
  • bgm_on関数
    • BGMのフェードイン。BGMの音量を0.5秒かけて戻す。

 今回は、BGMの切り替えはおこないません。必要ならば処理を拡張して、BGMの切り替えを実装するとよいでしょう。

 次は、このBGM管理の処理を、「Title」と「Maze」シーンに組み込んでいきます。

次のページ
BGM管理を各シーンで利用しよう

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Godot Engine 2Dゲーム開発入門連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21373 2025/07/30 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング