Open2

バーチャルキャスト VCIスクリプトプライベートサンプル集

PioPio

プライベートサンプル


主に始めたばかりでなにをしていいのかわからない方向けのかんたんなサンプル
...にしたい


ランダムに音が流れるスイッチ

  • シーンにスイッチになるものを置いておく
  • スイッチはSubItemにする
  • スイッチのオブジェクトにAudio Sourceを全部アタッチする
function onUse(item)
    local audios = item.GetAudioSources()
    if (audios ~= nil) then return end
    audios[math.random(#audios)]._ALL_Play(1.0, false)
end
PioPio

VCIをロードしたら音が流れる

もっと基本的なとこから行ってみましょ

  • EmptyObjectにAudioListnerだけつけて音声ファイルを入れる
  • Play on Awakeのチェックが入った状態(ループさせるならLoopも)

であればVCIを出しただけで音が流れるはず
あとから来た人もロードされた段階で再生開始される(再生秒数同期はしない)

音声の再生/停止組み込みたかったり3D音声で発生位置を変えたいとかの場合はスイッチなり音声発生位置のオブジェクトなりが必要でスクリプトも必要になる

音声再生・停止スイッチ

  • スイッチになるオブジェクト(SubItem)が必要
  • 音声組み込みはそのオブジェクトでもいいし他のとこでもいい
local iItem = vci.assets.GetTransform("switch")        -- スイッチのSubItem名
local BGM = iItem.GetAudioSources()                    -- スイッチにAudioSourceがある場合
local defaultVolume = 0.3                                  -- 音声ボリューム 別にいじれるようにしてもいい
local IsPlaying = false                                      -- 再生中フラグ ローカル管理の場合

-- ロードされた状態では停止(ローカル)
if ((BGM ~= nil) and (BGM[1] ~= nil)) then
  BGM[1].Stop()
  IsPlaying = false
end

function onUse(item)
  -- 音楽再生状態をトグル
  if (not ((BGM ~= nil) and (BGM[1] ~= nil))) then return end
  if (not (IsPlaying or false)) then
     -- 再生状態へ遷移
    BGM[1].Play(defaultVolume, true)        -- ループ再生
    IsPlaying = true
  else
    -- 停止状態へ遷移
    BGM[1].Stop()
    IsPlaying= false
  end
end

stateとかに再生状態書き込んであとから来た人と再生状態同期するとかも可能(ラグはしょうがない)

3D音声にする

UniVCI 0.41以降が必要

  • AudioSourceコンポーネントのReverb Zone Mixを1(3D側)にする
  • MinDistanceとMaxDistanceで減衰開始距離・最大距離を設定する

あとは他の音声と同じ