バーチャルキャスト+VCIでグリップボタンを押すとアクションが起こるオブジェクトを作る
バーチャルキャストで「オブジェクトをつかんだ状態でグリップボタンを押すと、オブジェクトの表情が変わる」ものを作ります。
「Lua」言語で書かれたVCIスクリプトをオブジェクトに適用することで、アクションによって反応するオブジェクトを作成することができます。
例によって忘れないよう急ぎのメモなので、スクショが極端に少ないですが、ご容赦ください。
VCIスクリプトの開発環境を整える(初回のみ)
下記を参照していきます。基本的には流れは同じですが、Windowsを熟知している方向けなのか微妙に設定のプロセスが飛んでるところがあったので、補完的な意味でメモすることにしました。
virtualcast.jp
まず、下記すべてをクリアした状態であることを確認して始めます。
・VCIスクリプトを追加したい「つかんで動かせるVCIオブジェクト」をUnityで作成済み
・VCIスクリプトを追加したい「つかんで動かせるVCIオブジェクト」を「The Seed Online」に投稿or公開状態でアップロード済み
・VCIスクリプトを追加したい「つかんで動かせるVCIオブジェクト」をバーチャルキャストで一度でも呼び出して使った状態
クリアしていない場合は、下記を参考にまずオブジェクト(アイテム)を作成します。
prince9.hatenablog.com
作成済みの「つかんで動かせるVCIオブジェクト」にVCIスクリプトを付け足していく形になります。
公式の各種サンプルはこちらになります。
virtualcast.jp
1.「The Seed Online」からVCIスクリプトつきのオブジェクトを取り込んでおく(自作のものに限らず、何でもOK)。
seed.online
ここでは下記を取り込みました
seed.online
2.バーチャルキャスト上で1.のオブジェクトと作成済みの「つかんで動かせるVCIオブジェクト」を読み込み、試しに使ってみる
3.バーチャルキャストを終了する
4.開発環境の「VSCode」をダウンロード&インストールする
code.visualstudio.com
5.Javaがインストールされていなければ、下記からダウンロード&インストールする(オンラインでいいかと思います)
www.java.com
6.インストールが終了したら、PCを再起動する
7.VSCodeを開き、左にある拡張機能のアイコンをクリックする
8.検索スペースのところに「VSCode-EmmyLua」と入力すると右側に「EmmyLua」が出てくるので、「インストール」をクリックする
9.Cドライブ→ユーザー→ユーザー名とクリックしていき、「表示」タブをクリックする
10.そうすると「隠しファイル」という項目があるので、□をクリックして隠しファイルを表示させる
www.jaskun.com
11.隠しファイルを表示させると「AppData」というフォルダが見えるので、AppData→LocalLow→infiniteloop Co,Ltd→VirtualCastとクリックしていき、「EmbeddedScriptWorkspace」フォルダがあるか確認する
12.VSCodeの「ファイル」メニュー→「フォルダーを開く」を選択し、11.のパスの「EmbeddedScriptWorkspace」フォルダを選択して開く
13.「types.lua」「template.lua」がVSCode上(左のウィンドウ)にあるか確認する
VCIスクリプトを書く(2回目以降はここから始める)
1.「EmbeddedScriptWorkspace」フォルダをエクスプローラで開いて「つかんで動かせるVCIオブジェクト」名のフォルダ名があるか確認する
2.「EmbeddedScriptWorkspace」フォルダにある「template.lua」をコピーする
3.「EmbeddedScriptWorkspace」フォルダ→「つかんで動かせるVCIオブジェクト」名のフォルダに2.をペーストする
4.3.でペーストした「template.lua」を「main.lua」に名前を変更する
5.4.の「main.lua」をVSCodeで開き、スクリプトを入力する
6.5.を保存する(VSCodeはまだ閉じない)
7.6.をコピーする
VCIスクリプトをオブジェクトに適用する
1.「つかんで動かせるVCIオブジェクト」を作成したUnityプロジェクトをUnityで開いて、シーンを読み込む
2.rootオブジェクトをクリックし「Inspector」→「Scripts」に下記を入力する
・Size → 1にする
・Name →「main.lua」と入力
・Source →「VCIスクリプトを書く」項目の7.でコピーしたものをペーストする。必要なコード全体をここにコピペする形です
スクリプトは下記になります。というより、ポスターのサンプルとほぼ同じです。
virtualcast.jp
サンプルの例ではUVが3×3となっていますが、ここでは2×2にしています。
またマテリアル名は「Usamat」にしています。
local assets = vci.assets local count = 0 if vci.state.Get("COUNT") then count = vci.state.Get("COUNT") end local TOTAL = 4 function SetCounterOffset(count) local offset = Vector2.zero -- y shift local Yshift = math.floor(count / 2) offset.y = -(1/2) * Yshift -- x shift local Xshift = count % 2 offset.x = (1/3) * Xshift vci.assets._ALL_SetMaterialTextureOffsetFromName("Usamat", offset) end SetTextureOffset(count) function onUse(use) if count >= TOTAL-1 then count = 0 else count = count + 1 end vci.state.Set("COUNT", count) SetTextureOffset(count) end
再度VCIオブジェクトとして書き出す
1.シーンを保存し、再度VCIオブジェクトとして書き出す
下記の「書き出す」項目を参照
2.「The Seed Online」で「つかんで動かせるVCIオブジェクト」のページを開き、「別のファイルを再アップロードする」をクリックする
3.1.で書き出した「.vci」ファイルを選択し、アップロードする
4.バーチャルキャスト上で動くかどうか確認する