この記事はアドベントカレンダー「【VCI】テーマパークを作ろう 」の5日目の記事です。
※本来やろうとしていたアニメーションによる観覧車作成はスクリプトが複雑になりそうだったため後半に回し、
予定を変更して簡単なスクリプトで書けるBGM再生について説明します。
今回の内容
今回は観覧車を作成しながら以下のことを学びます
- BGMの再生方法
- スクリプトの導入
※今回の方法ではおそらく他の方とBGM同期ががされませんのでご承知おきください。
BGMの再生手順
今回は作業に当たり再生したい音楽ファイルが必要です。形式はmp3であれば問題ないかと思います。
UnityでのBGMの設定
VCIでBGMを再生するためには「Audio Source」コンポーネントを使用する必要があります。
何らかのオブジェクトにAudio Sourceを使用するか、Hierarchyを右クリック>Audio>AudioSourceでAudioSourceコンポーネント付きのオブジェクトを作成してください。
作成が終わったら音楽ファイルをAudiosourceのAudioClipの部分にセットします。
以下が追加後のSSです。
AudioSourceの設定は以上ですが、音声ファイルを再生するためにはスクリプトを書く必要があるため引き続きその準備をしていきます。
まず、VCIObjectコンポーネントがついているコンポーネントをクリックします。
するとInspecterの下の方にscriptという項目があるかと思います。
その少し上にある「Script Enable Debiugging」にチェックと入れてください。
(このチェックを入れることでVキャスをやりながらスクリプトを修正することができるようになります)
完了したらエクスポートしてseedOnlineに取り込んでください。
■補足:scriptの項目について
scriptではスクリプトを何個使用し、それぞれがどのような名前・内容なのかを記載する部分です。
複数個のスクリプトの読み込むことも可能ですが、構成を凝らない限りは1つのファイルで問題ないと思います。
Sourceの部分になにか書かれているかと思いますが、内容はあとで書き換えるのでここでは触れなくて大丈夫です。
スクリプトの作成
ここからはVキャス及びエディタでの作業となります。
スクリプト入VCIを作成するためにはまずスクリプト書くための開発環境を作成する必要があります。
公式に手順がありますので以下を参照しながら環境を整えてください
・VCIスクリプトの開発環境の導入
・VCIスクリプトのチュートリアル
上記2つを行い環境が整いましたら早速BGM再生部分を作成して行きます。
まだVCIを読み込んでいない場合は一度読み込みを行ってください。
一度VCIを出すと上記URLで書かれていたワークスペースの中にseedOnlineで指定したVCI名の名前のフォルダが作成されており、そのなかに_main.luaというファイルがあるかと思います。これがスクリプト本体のファイルです。
早速このファイルを弄っていきたいところですが、_main.luaというファイルは修正を加えても勝手にseedOnline上のデータで上書きされてしまいます。
そのため、編集しながら動きを確かめる際には「_main.lua」をコピー&リネームして「main.lua」というような先頭のアンダーバーを削除したファイルを作成し、そのファイルに修正を加えていきます。
今回はBGMを再生したいため、以下のページを参考にコードを書いていきます
・ assets.audio (ExportAudio) (オーディオ制御)
上記ページを参考に作成したコードが以下のようになります。
-- trueならオーディオをループ再生、falseなら1回だけ再生
local audioLoop = true
-- 0 から 1 の間で音量を指定
local audioVolume = 0.005
--"Bgm"をループ再生する
vci.assets.audio._ALL_Play("Bgm", audioVolume, audioLoop)
基本Vキャスは爆音なのでVolumeは内部で聞きながら値を調整すると良いかと思います。
また、設定するAudio名がわからない場合は、Vキャス内に表示されているデバッグウィンドウをグリップすると確認できます。
何回かグリップするとVCIに入っているAudioの一覧を見ることができます。Audio以外の一覧も見れるので覚えておくと便利です。
これで音の設定は完了です。
■補足:関数の「ALL」の有無の違いについて
同じ効果の関数でも関数名に_ALL_がつくものとつかないものがある場合があります。
この場合、_ALL_がついてないものは自分のPCのみで動き、_ALL_がついているものは関数が呼ばれると部屋内の全員が実行されます。
今回のケースでは後からRoomに人が入ってきたときに、_ALL_がついているとすでに部屋の中にいる他の人も最初から再生されてしまうとおもい_ALL_はつけませんでした。(動作確認中)
終わりに
いかがでしたでしょうか?
スクリプト関係の環境もできたので少しずつスクリプトが必要な内容も紹介していこうと思います。
明日は装着VCIについて書く予定です。