ふりかえり
前回は「会心の一撃」の強化機能を実装し、より強敵に挑めるようになりました!
前回の投稿はこちら↓
BGMを実装!
今回は、はじまりの草原やまよいの森など各ステージごとのBGMを実装して、より没入感のあるゲームにしていきます!
スクリプトの変更
AudioManager.cs
BGMの再生・停止・フェードアウト機能を追加します。
[Header("BGM Audio Source")] public AudioSource bgmAudioSource; // BGM用 [Header("BGM Audio Clips")] public AudioClip titleBGM; // タイトルBGM public AudioClip stage1BGM; // ステージ1 BGM(はじまりの草原) public AudioClip stage2BGM; // ステージ2 BGM(まよいの森) public AudioClip stage3BGM; // ステージ3 BGM public AudioClip stage4BGM; // ステージ4 BGM public AudioClip stage5BGM; // ステージ5 BGM public AudioClip bossBGM; // ボス戦BGM // BGMを再生 public void PlayBGM(AudioClip bgmClip) { if (bgmClip != null && bgmAudioSource != null) { bgmAudioSource.clip = bgmClip; bgmAudioSource.loop = true; // BGMはループ再生 bgmAudioSource.Play(); Debug.Log($"BGMを再生しました: {bgmClip.name}"); } } // BGMを停止 public void StopBGM() { if (bgmAudioSource != null) { bgmAudioSource.Stop(); Debug.Log("BGMを停止しました"); } } // BGMをフェードアウト public void FadeOutBGM(float duration = 1.0f) { if (bgmAudioSource != null) { StartCoroutine(FadeOutBGMCoroutine(duration)); } } // BGMフェードアウトのコルーチン private System.Collections.IEnumerator FadeOutBGMCoroutine(float duration) { float startVolume = bgmAudioSource.volume; float currentTime = 0; while (currentTime < duration) { currentTime += Time.deltaTime; bgmAudioSource.volume = Mathf.Lerp(startVolume, 0, currentTime / duration); yield return null; } bgmAudioSource.Stop(); bgmAudioSource.volume = startVolume; // 音量を元に戻す Debug.Log("BGMをフェードアウトしました"); }
StageManager.cs
ステージに応じて適切なBGMを再生します。
// ステージに応じたBGMを再生 private void PlayStageBGM(int stage) { if (audioManager == null) return; AudioClip bgmClip = GetBGMForStage(stage); if (bgmClip != null) { audioManager.PlayBGM(bgmClip); } } // ステージに応じたBGMを取得 private AudioClip GetBGMForStage(int stage) { switch (stage) { case 1: return audioManager.stage1BGM; case 2: return audioManager.stage2BGM; case 3: return audioManager.stage3BGM; case 4: return audioManager.stage4BGM; case 5: return audioManager.stage5BGM; default: // ステージ5以降はステージ5のBGMを再生 return audioManager.stage5BGM; } } // タイトルBGMを再生 public void PlayTitleBGM() { if (audioManager != null && audioManager.titleBGM != null) { audioManager.PlayBGM(audioManager.titleBGM); } } // BGMを停止 public void StopBGM() { if (audioManager != null) { audioManager.StopBGM(); } } // BGMをフェードアウト public void FadeOutBGM(float duration = 1.0f) { if (audioManager != null) { audioManager.FadeOutBGM(duration); } }
Unityでの設定
- AudioManagerに新しく追加したbgmAudioSourceをアタッチ
- 各BGMファイルをAudioClipに設定

動作確認
しっかりBGMが流れていることが確認できました!
またはじまりの草原から迷いの森に移動したらBGMも変更されました!
まとめ
今回はステージごとのBGMを実装しました!
音があるだけでゲームの雰囲気が一気にアップしますね!
次回予告
次回は「設定画面」を実装していきます!
お楽しみに!