バーチャルキャスト公式Wiki
メニュー
Steam版
デバイス
アセット
配信
その他
リリース情報
- wiki編集者用ページ
-
Webビデオプレイヤー・リモコンによるメッセージ送信を利用した、特定の再生時間になるとエフェクトを再生するサンプルVCIです。
ルームにおいて、Webビデオプレイヤーと操作用のリモコンを設置している場合動作します。
Webビデオプレイヤーで下記の動画を再生時、紹介シーンが切り替わる「5秒・48秒・84秒」のタイミングでエフェクトが再生されます。
こちらの動画を予め再生できるように設定しておく必要があります。
https://www.youtube.com/watch?v=MPmCqKp8V1s
-------------------------------- ---動画用メッセージ -------------------------------- ---Webビデオプレイヤーの情報 local MESSAGE_KEY_WEB_VIDEO_INFO_FROM_REMOCON = "WebVideoInfoFromRemocon" -------------------------------- ---定義データ -------------------------------- ---演出に使用する動画タイトル local TARGET_VIDEO_TITLE = "【リアルとメタバースを連携できる!】バーチャルキャスト OSCプロトコル対応" -------------------------------- ---動画データ -------------------------------- ---動画タイトル local videoTitle = "" ---動画時間 local videoDuration = 0 ---動画の再生開始時間 local videoPlayStartTime = 0 ---動画再生中 local isPlayingVideo = false ---動画の再生開始時のクロック local videoPlayStartClock = os.clock() -------------------------------- ---演出データ -------------------------------- ---再生エフェクト local effect = vci.assets.GetEffekseerEmitter("Effect") ---演出開始時間(動画の秒数) local playEffectTimeTable = {5, 48, 84} ---直前フレームでの動画再生時間 local beforePlayTime = 0 -------------------------------- ---関数 -------------------------------- ---Web動画プレイヤーの情報をリモコンアイテムから取得 local function HandleGetWebVideoInfo(sender, name, message) --動画タイトル videoTitle = message.title --動画時間 videoDuration = message.duration --現在の再生時間 videoPlayStartTime = message.currentTime beforePlayTime = message.currentTime --再生中 isPlayingVideo = message.isPlaying print("動画情報更新\nタイトル:" .. videoTitle .. "\n再生時間時間:" .. string.format("%0.2f / %0.2f", videoPlayStartTime, videoDuration) .. "\n再生状態:" .. tostring(isPlayingVideo)) --動画の再生開始時のクロック videoPlayStartClock = os.clock() end vci.message.On(MESSAGE_KEY_WEB_VIDEO_INFO_FROM_REMOCON, HandleGetWebVideoInfo) ---全ユーザーで毎フレーム呼ばれる function updateAll() --動画再生中の場合 if isPlayingVideo then --対象動画である場合 if videoTitle == TARGET_VIDEO_TITLE then local currentTime = videoPlayStartTime + (os.clock() - videoPlayStartClock) for index, playEffectTime in ipairs(playEffectTimeTable) do --エフェクトの再生時間を通過した場合 if (beforePlayTime <= playEffectTime) and (playEffectTime <= currentTime) then effect.Play() end end beforePlayTime = currentTime end end end