TOPVCI連携フォーマット > 飲み物VCIテンプレート

飲み物VCIテンプレート


ダウンロード

下記のリンクよりダウンロードしてください。
mugset.unitypackage



更新履歴

アップデートする場合はテンプレートのアップデートを参照

更新日 バージョン 内容
2021/03/04 Ver1.01
  1. ルームで液体が注げなくなる不具合修正
    main.luaの修正で対応しています。



使用属性

||LIQUID:RRR,GGG,BBB|| (液体属性)

 液体を注げるオブジェクトです。


||GLASS|| (グラス属性)

 ワイングラス・ジョッキ等、乾杯するための属性


サンプルのインストール

mugset.unitypackage」をUnityへドラッグ&ドロップしてください。

するとプロジェクトのAsset内にRamenVCI/MugSetフォルダが作成されます。


テンプレートのアップデート

過去バージョンからアップデートする場合は、下記の手順で差し替えてください。


サンプルシーンを開く

サンプルシーンAssets/RamenVCI/MugSet/MugSetを開くと、中に酒盛りVCIのサンプルが設置してあります。

このサンプルを編集していきますが、Luaスクリプトを変えない場合は下記の通りに名前を統一してください。

オブジェクト名編集可否説明
Bin1~5||LIQUID:~|| 酒瓶のサンプル5本です。このサブアイテムにコライダーを入れています。
Mug1~X||GLASS|| × 液体が入るグラスのサブアイテムです。
液体アイテムと接触すると中に注がれます。
またグラス属性が付与されているので、グラス同士乾杯することもできます。
Mug1~XLiquid モデルのみ可 Mug1~X||GLASS||内にある液体オブジェクトです。
オリジナルモデルに差し替える場合、液体オブジェクトの名前はこのオブジェクト名に合わせてください。
また、適用するマテリアル名もMug1~XLiquidに合わせてください。
※ソースを解析して書き換えれる方はこの限りではありません。
MUG_FLAG1~X × グラスの液体量・増減速度を共有するフラグオブジェクトです。
グラスの数だけコピーして用意してください。
VCIサブアイテムのGroupIDはMug1~||GLASS||の物と同じにしてください
Y座標:増減量
Yスケール:液体量

ボトルを作る

ボトルはオブジェクト名に液体属性を付与すると連携できます。
例) bottle||LIQUID:255,219,001||
後ろのRGBは000~255の数値で設定しますが、数値は0埋めで必ず3桁で入力してください。



新規にボトルを作る手順
ボトルのモデルをVCIオブジェクト内に追加する。
オブジェクトにVCI Sub ItemColliderを追加します。
手法によって下記のように設定するのがおすすめです。

手法 Collider Rigidbody
宙に浮く IsTrigger [レ] UseGravity  [ ]
IsKinematic [レ]
重力に従って落ちる IsTrigger [ ] UseGravity  [レ]
IsKinematic [ ]

サブオブジェクトの名前に液体属性を追記します。
||LIQUID:RRR,GGG,BBB||
後ろのRGBは000~255の数値で設定してください。
数値は0埋めで必ず3桁で入力してください。


子オブジェクトにColliderのIsTriggerを追加している場合は、そのオブジェクト名にも同じLIQUID属性を追加してください。


グラスを作る

グラスを追加する手順
グラスのモデルをVCIオブジェクト内に追加する。
オブジェクトにVCI Sub ItemColliderを追加します。
手法によって下記のように設定するのがおすすめです。

手法 Collider Rigidbody
宙に浮く IsTrigger [レ] UseGravity  [ ]
IsKinematic [レ]
重力に従って落ちる IsTrigger [ ] UseGravity  [レ]
IsKinematic [ ]

オブジェクト名をMug8||GLASS||に変更します。
今回は8個目のグラスなのでMug8ですが、
9個目と作っていく場合はMug9と数字を上げていきます。
後ろの||GLASS||はグラス属性を表し、この属性同士を衝突させると他VCIのグラスアイテムと乾杯できます。


子オブジェクトにColliderのIsTriggerを追加している場合は、そのオブジェクト名にもGLASS属性を追加してください。

MUG_FLAGを複製し、オブジェクト名をMUG_FLAG8に変更します。
このフラグはグラスごとの液体量を共有するために使用するので、グラスを増やすごとに複製してください。
9個目のフラグオブジェクトを作成する場合はMUG_FLAG9にオブジェクト名を変更します。
グラスオブジェクトと、フラグオブジェクトのGroupIDを同じにします。
この時、他のグラスオブジェクトのGroupIDと被らないようにしてください。
グラス内の液体オブジェクト名と、適用しているマテリアル名をMug8Liquidに変更します。
今回は9個目のグラスオブジェクトを作成する場合はMug9Liquidとなります。
液体オブジェクトについて

徐々に液体が増減するように作る場合は、液体の底面がXYZのゼロ座標になるようにすると、丁度よく増減します。


液体の色を変更するために、Material名をそれぞれ対応する必要があります。


音を追加する

サンプルスクリプトには、グラス音・飲む音・注ぐ音を登録できるようにテンプレートを作っています。

VCI Object内の適当なオブジェクトに音ファイルを追加します。
VCIを一度出力してバーチャルキャストで起動すると、
C:\Users\ユーザー名\AppData\LocalLow\infiniteloop Co,Ltd\VirtualCast\EmbeddedScriptWorkspace\作成したVCI名\に自動生成されるので_main.luamain.luaにファイル名を変更する。
main.lua内の下記のfunctionで、処理時の音を設定しています。
function名 再生するタイミング
SoundPlayGlass グラス音
グラス同士を衝突させた時に再生します。
SoundPlayDrinking 飲む音
液体入りグラスを頭に衝突させた時に再生します。
SoundPlayPour 注ぐ音
液体オブジェクトをグラスに衝突させた時に再生します。
該当するfunctionにある、vci.assets.audio._ALL_Play()のコメントアウトを外し、””の中を追加した音ファイル名に変更します。

スクリプトの定数について

サンプルスクリプトには、いくつか定数が定義されています。
必要に応じて数値等を修正できます。

定数名 説明 デフォルト値
LIQUID_DRINK_SPEED グラスの液体を飲むスピードを調整します。
この値を大きくするほど、すぐに液体がなくなります。
1.0
LIQUID_POUR_SPEED 液体がグラスに注がれるスピードを調整します。
この値を大きくするほど、すぐに液体で満たされます。
0.5
MAX_LIQUID_SCALE グラスに注げる最大スケールです。%数値で指定し、100でScale=1になるまで注げます。 80
GLASS_TYPE グラスの形状を指定します。
形状によって液体のスケール変更に差が出ますので、形状によって変更してください。
形状 定数名 スケールの変更方法
円柱(ジョッキタイプ) GLASS_TYPE_CYLINDER X,Zが常に1.0で、Yのみ可変する。
円錐(ワイングラスタイプ) GLASS_TYPE_CONE XYZが常に同期して可変する。
GLASS_TYPE_CYLINDER
LIQUID_SCALE_TYPE グラスに液体を注ぐ時のパターンを変更します。
定数名 動作
LIQUID_SCALE_TYPE_FAST 一瞬でグラスが液体で満たされます。
拡大縮小に合わせた液体モデルの作成が困難な場合はこちらを選択
LIQUID_SCALE_TYPE_SLOW 徐々にグラスが液体で満たされます。
LIQUID_SCALE_TYPE_SLOW
LIQUID_COLOR_RATE 液体の色の強さを設定します。
高い程明るい色になり、低い程暗い色になります。
液体のテクスチャだけではきれいな色の表現が難しい場合に変更してください。
※値が高すぎると、ブルームがかかり眩しい色になります。
1.0