mieki256's diary



2020/11/18(水) [n年前の日記]

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

Godot Engine 3.2.3 x64 を使って3D表示の簡単なシューティングゲームっぽいものを作る。

今回はサウンドを追加してみる。

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

_simpleshootemup_sounds.zip

解凍すると以下のファイルが入っている。

プロジェクトフォルダにインポート。 :

.wav や .ogg をGodot Engineのプロジェクトフォルダ\imports\ にコピー。自動でインポートされる。

3d_tuto17_add_sounds_ss01.png


インポート設定を確認。bgm.ogg を選択して、インポートタブをクリック。BGMはループ再生してほしいので、Loop にチェックが入ってることを確認する。もしチェックが入ってなかったらチェックを入れて「再インポート」をクリック。

3d_tuto17_add_sounds_ss02.png


SEとして使う各wavについても確認。1回鳴らしたら再生終了してほしいので、Loopにチェックが入ってないことを確認する。

3d_tuto17_add_sounds_ss03.png

BGMを追加。 :

BGMを追加する。Mainシーンを開いて、AudioStreamPlayerノードを追加する。

3d_tuto17_add_sounds_ss04.png


Bgm にリネーム。

3d_tuto17_add_sounds_ss05.png


Bgm を選択して、Stream に bgm.ogg を設定する。
  • ファイル一覧ウインドウから bgm.ogg をドラッグアンドドロップ。
  • あるいは、Stream の横の「空」をクリックして「読込み」→ bgm.ogg を選択。

3d_tuto17_add_sounds_ss06.png


スクリプトに、BGM再生開始を記述。res://scripts/Main.gd を開いて、初期化処理 _ready() の中に、$Bgm.play() を追記する。

3d_tuto17_add_sounds_ss07.png


ついでに一応、ゲームオーバー (die_player()) とステージクリア (die_enemy()) の中で、$Bgm.stop() を呼んでBGMを停止しておく。すぐにシーンが切り替わってBGMが消えるのでこの処理はしなくてもいいのかもしれないけれど、一応念のため。

3d_tuto17_add_sounds_ss08.png

プレイヤーのダメージSEを追加。 :

プレイヤーがダメージを受けた時にダメージSEを鳴らしたい。

プレイヤーのシーン、res://assets/Player.tscn を開いて、AudioStreamPlayerノードを追加。DamageSe にリネーム。

3d_tuto17_add_sounds_ss09.png


DamageSe を選択して、Stream に player_damage_se.wav を指定。

3d_tuto17_add_sounds_ss10.png


スクリプト、Player.gd を修正。SEの再生開始を指定する。ダメージ処理の開始部分に ―― emit_siginal("player_damaged") を呼んでる行の前後のあたりに、$DamageSe.play() を追記する。

3d_tuto17_add_sounds_ss11.png

これで、プレイヤーがダメージを受けたタイミングでダメージSEが鳴るようになった。

敵のSEを追加。 :

敵にもSEを追加していく。ダメージを受けた時にダメージSEを鳴らして、弾を撃った時に発射SEを鳴らしたい。

EnemyZako.tscn を開いて、AudioStreamPlayerノードを2つ追加。DamageSe と ShotSe にリネーム。

3d_tuto17_add_sounds_ss12.png


Streamプロパティに wav ファイルを指定。
  • DamageSe の Stream に enemy_damage_se.wav を指定。
  • ShotSe の Stream に enemy_shot_se.wav を指定。

スクリプト内で各SEの再生を指定する。EnemyZako.gd を編集。

ダメージを受けるタイミングで ―― emit_siginal("enemy_damaged")を呼んでる行の前後で、$DamageSe.play() を呼ぶ。

3d_tuto17_add_sounds_ss14.png


弾を撃つタイミングで ―― _on_ShotTimer_timeout() の中で、$ShotSe.play() を呼ぶ。

3d_tuto17_add_sounds_ss13.png


これで、敵がダメージを受けた時と弾を撃った時にSEが鳴るようになった。

動作確認。 :

動作確認をしてみる。Mainシーンを開いてF6キーを押す。



ちゃんと音が鳴ってくれた。

次回はプロジェクトをエクスポートして、Windows上で動くexeファイルや、Webブラウザ上で動くHTML5版を出力してみる。

以上です。

過去ログ表示

Prev - 2020/11 - 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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project