気分次第で好きなBGMを選べる!オーディオプレイヤーのつくり方

ワールド内にオーディオプレイヤーを置いて、気分次第で好きなBGMを選べるようにしてみませんか?
今回は選曲ができるオーディオプレイヤーをつくっていきます。

少し複雑な仕組みも出てきますが頑張りましょう!
すぐに使えるサンプルも下記からダウンロードできます。

ボタンを押すとBGMが再生・停止できるようにする

最初はPlay Audio Source Gimmickを使って再生と停止ができるようにしましょう。

  • Hierarchyを右クリックか上部メニューのGameObjectから新しい空のGameObjectを作成し、名前を「AudioPlayer」とします。
  • 続いて、AudioPlayerを右クリックして、子オブジェクトとしてAudio>Audio Sourceを作成します。名前をBGM1としておきましょう。
  • BGM1のPlay On Awakeのチェックを外し、Loopにはチェックを入れてください。
  • また、BGM1のAudioClipにはドラッグアンドドロップか右側の◎ボタンから流したい音源ファイルを選択してください。
  • BGM1に「Play Audio Source Gimmick」コンポーネントを追加し、Targetを「LocalPlayer」、Keyを「playingBGM1」、Parameter Typeを「Bool」とします。

Play Audio Source GimmickPlayer Local UI下でなくてもLocalPlayerを指定できます。LocalPlayerをTargetにするとプレイヤーごとに異なるBGMを流すことができます。

続いて再生ボタン、停止ボタンを作っていきます。

  • 新しいGameObjectを作成し、名前を「PlaySwitch」とします。
  • PlaySwitchにInteract Item Triggerを追加し、+ボタンでトリガーを追加します。
    • Targetを「Owner」、Keyを「playingBGM1」、Valueを「Bool」にしてチェックを入れましょう。
  • 最後にPlaySwitchの子に3D Object>Cubeを追加し、Scaleを調整します。
  • 同様に「StopSwitch」を作成し、こちらはInteract Item TriggerのValueのチェックを外しておきます。

これでBGMの再生・停止が出来るようになりました。実行して確かめてみましょう。

ボタンを押すと対応するBGMが流れる

次は、複数のBGMからひとつを選んで再生できるようにしてみましょう。

  • 上と同様に別の音源を設定したAudio Sourceを追加し、名前を「BGM2」「BGM3」…とします。
  • Play Audio Source GimmickのKeyもそれぞれ「playingBGM2」「playingBGM3」…と対応させておいてください。
  • 続いて、親のAudioPlayerにPlayer Logicを追加します。
    • Targetを「Player」、Keyを「SelectBGM」とし、BGMの数だけ+ボタンでロジックを追加します。

それぞれのロジックは次のように設定しましょう。

Equalsというロジックはふたつの引数の値が等しいときにtrue、等しくないときにfalseを返します。
この例だと、例えばplayingの値が2のとき、playingBGM2はtrueになりますが、それ以外はfalseになります。
こうすることで、playingの値を変えてSelectBGMを発行するだけでBGMの中からひとつだけを鳴らすことができます。

BGM選択ボタンもつくっていきましょう。

  • PlaySwitch、StopSwitchを削除して、代わりに新しく「BGM1Switch」をつくります。
  • BGM1SwitchにInteract Item Triggerを追加して、トリガーをふたつ追加します。
  • ひとつ目はOwnerに対しInteger型のplayingとして1を発行、ふたつ目はOwnerにSignal型のSelectBGMを発行します。
  • BGM1Switchの子にもCubeをつくっておきましょう。
  • 同様に、playingに2、3、…を発行するBGM2Switch、BGM3Switch…も作ります。
  • また、playingに0を発行するStopSwitchも作っておくといいでしょう。

ここまでできたら実行して確かめてみましょう。
スイッチを押すと、それぞれに対応したBGMが流れるはずです。

「次へ」ボタンでBGMを選べるようにする

最後に、オーディオプレイヤーらしく「次へ」「前へ」ボタンでプレイリストを切り替えられるようにしてみましょう。

  • 新しいGameObjectを作成し、名前を「NextSwitch」にします。
  • NextSwitchにInteract Item Triggerを追加し、Targetを「Owner」、Keyを「NextTrack」、Valueを「Signal」にします。これも子にCubeをつくっておきましょう。
  • 続いてNextSwitchにPlayer Logicを追加し、以下のように設定します。

ボタンを押して「NextTrack」が発行されると、ロジックが実行されます。ひとつ目はplayingに1を足すことでBGMを切り替えます。
ふたつ目はplayingの値がBGMの個数を超えないようにしています。引数2の値はBGMの数に合わせて変えてください。
3つ目でSelectBGMを発行することでAudioPlayerのロジックを実行し、現在のBGMを止めて次のBGMを流します。

  • 同様に、以下のように設定したPreviousSwitchもつくりましょう。仕組みは同じで、playingから1を引き、0より小さくならないようにしています。

実行して確かめてみましょう。NextSwitch、PreviousSwitchを押すたびにBGMが切り替わります。

すぐに使えるサンプルプロジェクト

上記のオーディオプレイヤーをさらに使いやすくしたサンプルを配布します。

Audio SourceのAudio Clipに音源を指定するだけですぐに使えるようになっているので、ぜひワールドに置いてみてください。

4曲から選べるようになっていますが、チャレンジしてみたい人は曲数を変えたりしてみましょう。

Cluster Creator KitやUnityの機能を組み合わせると、複雑な仕掛けも工夫次第でつくることができます。
自由なアイデアでワールドをつくってみましょう!

記事をシェアしてワールド制作を盛り上げよう!