godot

L015 音


godot4.xの覚書です。

Playerノード

以下、geminiによる解説

Godot 4で音楽(BGM)や効果音(SE)を実装する際は、用途に合わせて3種類のオーディオノードファイル形式を使い分けるのが基本です。

特にGodot 4.3以降では、音楽のループや同期機能が大幅に強化されています。

1. 適切なノードの選択

ノード名特徴・用途
AudioStreamPlayerBGM・UI音向け。 画面上の位置に関係なく、常に一定の音量で再生されます。
AudioStreamPlayer2D2Dゲームの環境音向け。 プレイヤーとの距離や位置(左右)によって音量やパンが変化します。
AudioStreamPlayer3D3Dゲームの環境音向け。 3D空間内での距離減衰やドップラー効果が適用されます。

再生したい音の性質に合わせて、以下の3つのノードから選びます。

Godot 4で音楽(BGM)や効果音(SE)を実装する際は、用途に合わせて3種類のオーディオノードファイル形式を使い分けるのが基本です。

特にGodot 4.3以降では、音楽のループや同期機能が大幅に強化されています。

1. 適切なノードの選択

再生したい音の性質に合わせて、以下の3つのノードから選びます。

ノード名特徴・用途
AudioStreamPlayerBGM・UI音向け。 画面上の位置に関係なく、常に一定の音量で再生されます。
AudioStreamPlayer2D2Dゲームの環境音向け。 プレイヤーとの距離や位置(左右)によって音量やパンが変化します。
AudioStreamPlayer3D3Dゲームの環境音向け。 3D空間内での距離減衰やドップラー効果が適用されます。

2. 推奨されるファイル形式

メモリ効率と音質のバランスを考えることが重要です。

  • BGM: .ogg または .mp3
    • 圧縮されているためファイルサイズが小さく、長い曲に適しています。
    • Godot 4では.oggの方がループ処理との相性が良く推奨されることが多いです。
  • SE (効果音): .wav
    • 非圧縮(または低圧縮)で再生時のCPU負荷が低いため、頻繁に鳴らす音に適しています。

3. シーンを跨いでも音楽を止めない方法(Autoload)

ゲームのシーン(ステージ)を切り替えてもBGMを流し続けたい場合は、**「Autoload(シングルトン)」**を利用します。

  1. 新しいシーン(MusicPlayer.tscnなど)を作成し、AudioStreamPlayerを追加。
  2. スクリプトを作成し、play_music(path)のような関数を用意。
  3. [プロジェクト設定] > [グローバル] > [Autoload] にそのシーンを登録。
  4. コードから MusicPlayer.play_music("res://bgm.ogg") のように呼び出す。

4. Godot 4.3からの新機能:高度な音楽管理

Godot 4.3からは、インポート設定の「Advanced」から、音楽にBPM(テンポ)やビート数を設定できるようになりました。これにより、音楽の節目で正確にループさせたり、リズムに合わせてゲームイベントを発生させたりすることが容易になっています。

geminiより

SE

サウンドエフェクトを設定します。

小さい音量付きです。

爆発のエフェクトとセットにするため、元のデータをL014とします。
変更箇所は以下です。

effect1.gd

extends Area2D

## 爆発シーンを読み込む
const ExpObj = preload("res://exp.tscn")

func _ready() -> void:
	position = Vector2(100, 100)
	scale =  Vector2(5,5)	#サイズ
	$AudioStreamPlayer2D.volume_db = 10.0206 #追加 音量の設定
	
func _on_input_event(viewport, event, shape_idx):
	if event is InputEventMouseButton:
		if event.is_pressed():
			
			var explosion = ExpObj.instantiate()
			#位置移動
			explosion.position = position
			# ルートノードに爆発オブジェクトを登録する
			get_tree().root.add_child(explosion)

			#削除
			#queue_free()
		  #追加
			$AudioStreamPlayer2D.play()
			#await $AudioStreamPlayer2D.finished
			#await get_tree().create_timer(1.5).timeout
	
GitHub - WOCae/L014_effect at r1_SE
Contribute to WOCae/L014_effect development by creating an account on GitHub.

コメント