実現したいこと
1つのシーン内で特定の条件が満たされたとき、別のBGMに切り替える
発生している問題・分からないこと
プレイ中はBGM1を流し、ゲームオーバーになったらBGM2を流す、といった処理を実装させたいのですが、どのようにプログラムすればいいのかがわかりません。
現状ではBGM1だけをMain CameraのAudioSourceでループ再生させています。プレイヤーのライフが0になったときにisAlive (生存しているかどうかのフラグ) がfalseになるので、そのタイミングで切り替わるようにしたいです。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
teratailやGoogleで検索しましたが、シーンを跨いでのBGM切り替え方法や、逆に全シーン通してBGMを流す方法しか載っておらず、自分が求める答えは得られませんでした。
補足
特になし
現状の質問内容では「Update()内のif文でisAliveをチェックし、該当していればBGM1を停止してBGM2を再生すればよい」と初歩的な内容になりますが、違いますか?
bool型のフラグを2つ用意してtrueになったときbgmを流すという処理を書いておいてゲームオーバー時にフラグを切り替えればよいと私は思いました。
そのコードを質問文に記載してください。
コードはありません。
Main CameraのAudio SourceにBGM1を直接入れて、Play On Awakeにチェックを入れてループさせているのが現状です。
bool値をチェックするのは分かっているのですが、流れているBGMを停止して別のBGMを流すというプログラムの書き方が分かりません。
(blanketさんを質問者だと勘違いしてました)
「分からない」と言う前に公式ドキュメントを読みましょう。
https://docs.unity3d.com/ja/2021.3/ScriptReference/AudioSource.html
再生するには「~.Play();」、停止するには「~.Stop();」を使えばいいくらいは分かるはずです。
その上でif文で判定し、分岐を行えばいいだけの話です。