mieki256's diary



2020/10/30(金) [n年前の日記]

#1 [godot] Godot Engineでサウンドを追加

Godot Enigne 3.2.3 x64 の勉強を兼ねて、Apple Catcher っぽいゲームを作成中。環境は Windows10 x64 2004。

一通りゲームっぽい感じになってきたので、今回はBGMやSEをつけてみる。ちなみに Godot Enigne ではサウンドファイルとして ogg や wav が利用できるらしい。

利用するサウンドファイル。 :

利用するサウンドファイルは以下。自作してみた。CC0 / Public Domain ってことで。

_sound_files.zip

解凍すると以下のファイルが入ってるはず。
  • bgm.ogg ... BGMファイル
  • damage.wav ... ダメージを受けた時のSE
  • getitem.wav ... 林檎を取った時のSE

サウンドファイルをインポート。 :

Godot Enigne のエディタ画面上に、ogg や wav をドラッグアンドドロップする。

godot_tuto15_add_sounds_ss01.png


res://直下にコピーされた。

godot_tuto15_add_sounds_ss02.png


ドラッグアンドドロップして、resources/ 以下に移動した。

godot_tuto15_add_sounds_ss03.png

インポート設定を確認。 :

各サウンドファイルをループ再生させるかどうかは、インポート時の設定項目で指定できる。

bgm.ogg のインポート設定を確認。bgm.ogg を選択して、インポートタブをクリック。「Loop」に有効になっていることを確認。この ogg ファイルはループ再生される。

godot_tuto15_add_sounds_ss04.png


damage.wav のインポート設定を確認。damage.wav を選択してインポートタブをクリック。「Loop」が無効になっているので、この wavファイルは再生すると1回だけ再生される。

godot_tuto15_add_sounds_ss05.png


getitem.wav のインポート設定を確認。「Loop」が無効になっているので、1回だけ再生される状態。

godot_tuto15_add_sounds_ss06.png

サウンド再生用のノードを追加。 :

Godot Engine でサウンドファイルを再生したい時は AudioStreamPlayerノードを使うらしい。

Main.tscn を開いて、Mainノードの下に AudioStreamPlayerノードを追加する。Mainノードを選択して、ノード追加ボタンをクリック。

godot_tuto15_add_sounds_ss07.png


「Nodeを新規作成」ウインドウで「audio」と打ち込むとリストアップされるので、「AudioStreamPlayer」を選択して「作成」。

godot_tuto15_add_sounds_ss08.png


AudioStreamPlayerノードが追加された。

godot_tuto15_add_sounds_ss09.png


分かりやすくするために、ノード名を「Bgm」に変更。

godot_tuto15_add_sounds_ss10.png

サウンドファイルを指定する。 :

AudioStreamPlayerノードに、鳴らすサウンドファイルを指定する。

Bgmノードを選択。Streamプロパティに bgm.ogg をドラッグアンドドロップ。

godot_tuto15_add_sounds_ss11.png


サウンドファイルが指定された。

godot_tuto15_add_sounds_ss12.png

スクリプト内で再生と停止を指定。 :

メインシーンのスクリプト Main.gd 内で、BGMの再生、停止を指定する。

godot_tuto15_add_sounds_ss13.png

  • メソッド new_game() 内に $Bgm.play() を追加。これでゲーム開始時にBGMが再生される。
  • メソッド game_over() 内に $Bgm.stop() を追加。これでゲームオーバー時にBGM再生が停止される。

プレイヤーシーンにもサウンドを追加。 :

プレイヤーシーンにもサウンドを追加する。Player.tscn を開く。Player.tscn を選択して右クリック。「シーンを開く」を選択。

godot_tuto15_add_sounds_ss14.png


Playerノードを選択してノード追加ボタンをクリック。

godot_tuto15_add_sounds_ss15.png


ダメージSEと林檎取得SEの2種類を鳴らしたいので、AudioStreamPlayerノードを2つ追加する。

godot_tuto15_add_sounds_ss16.png


分かりやすくするために、GetAppleSe、DamageSe にリネーム(名前変更)。

godot_tuto15_add_sounds_ss17.png


GetAppleSe と DamageSe の Stream に、damage.wav、getitem.wav をドラッグアンドドロップして割り当てる。

godot_tuto15_add_sounds_ss18.png

godot_tuto15_add_sounds_ss19.png


プレイヤーシーンのスクリプト Player.gd 内でSE再生を指定する。

godot_tuto15_add_sounds_ss20.png

メソッド _on_Player_body_entered(body) 内に以下を追加。
  • 林檎を取った時に、$GetAppleSe.play() を呼ぶ。
  • 爆弾に当たった時に、$DamageSe.play() を呼ぶ。
それぞれ1回鳴らしたら再生が終了するので、BGMと違って .stop() は呼ばなくていい。

音量を調整。 :

BGMの音量がちょっと大き過ぎる気がしてきたので、AudioStreamPlayer のプロパティで調整してみる。

メインシーンのBgmノードを選択して、「Volume Db」にマイナス値を指定。これで音量を下げることができる。ここでは -7 を指定してみた。

godot_tuto15_add_sounds_ss21.png

動作確認。 :

メインシーンを開いてる状態でF6キーを押して動作確認。



音が鳴ってくれた。

次回は背景をどうにかしたい。灰色だけの背景は寂しい…。

以上です。

過去ログ表示

Prev - 2020/10 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project