ふりかえり
前回は「会心の一撃」の強化機能を実装し、より強敵に挑めるようになりました!
前回の投稿はこちら↓
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を実装しました!
音があるだけでゲームの雰囲気が一気にアップしますね!
次回予告
次回は「設定画面」を実装していきます!
お楽しみに!


