VCIでマイクを作ってみる

# VCIでマイクを作ってみる

[バーチャルキャスト](https://virtualcast.jp/)にアイテムを持ち込むことができるようになりました。
なんか話だけ聞いてると難しそうですが、スクリプトとか考えなければそんなに難しくないです。
とりあえずバーチャルキャスト内にアイテムを持ち込むまでのやってみたいと思います。

## VCI作成する準備
まずは、[wiki](https://virtualcast.jp/wiki/doku.php?id=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90:vci%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E5%B0%8E%E5%85%A5)を確認します。

必要なファイルのダウンロードということで

- [UniVCI-x.xx.unitypackage](https://github.com/virtual-cast/VCI/releases)
- [Unity-2018.2.xx](https://unity3d.com/jp/get-unity/download/archive)

とありますので、Unityが起動できる環境をつくってunitypackageをダウンロードします。

で、ハマりポイント１がunitypackageをダブルクリックで入れる前に！！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/eb69380e-bd09-a7d0-76b2-f01c0157ce13.png)

説明をよく読まないで、パッケージをダブルクリックで入れて意味不明なエラーが出て嫌になって辞めないように・・・

これでパッケージをダブルクリックで入れて準備完了！

## 2. 持ち込みたいオブジェクトを用意
バーチャルキャスト内に持ち込みたいオブジェクを用意します。
今回はバーチャルキャストの前身のVR Live Studio時代に使ってたマイクを持ち込みたいと思います。

Unity上で表示する状態までオブジェクトを用意します。

ということで、FBXをドラック＆ドロップでマイクを用意しました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/4eeec9a2-a410-20b5-b516-c989d16fead2.png)

## 3. ルートオブジェクトの作成

wikiで言うとここらへん　→　[VCI作成](https://virtualcast.jp/wiki/doku.php?id=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90)

空のゲームオブジェクトを作成し名前を【root】にします
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/17bb3203-8618-3822-bc6d-ecf4be477fda.png)

作成した【root】オブジェクトに対してAdd Componentで【VCI Object】を追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/7e47f81f-063c-ed58-b4c9-a12ce6a9ab19.png)

VCI Objectコンポーネントの中身（Infomation)を適宜必要な情報入れます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/ef4c73d7-28cd-ab90-9948-facf9d2c8985.png)

## 4. マイク本体の作成
作成した【root】オブジェクトの子供としてMicオブジェクトを作成します。
このような感じで階層の下にオブジェクト本体を置きます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/46bfd81a-4d9c-ce9d-077d-2e8ea8cf789c.png)

作成した子オブジェクトにAdd Componentで【VCI SubItem】を追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/fd07a230-0520-055d-811b-c5560cd71d3e.png)

VCI SubItemコンポーネントの中身をやりたい挙動通りに修正します。

- Grabbale →　持ちたいからON
- Scalabe →　スケール変更したいからON
- Rigibody.Gravity →　重力いらないからOFF
- Is Kinematic →　空中に止まってほしいのでON

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/c1ce26b2-ae6f-b557-0f8e-dc38ca980c71.png)

あと、掴むための当たり判定が必要なのでAdd ComponentでBox Colliderを追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/3098fb95-4c0c-93e4-f884-26ff86ad89dd.png)

そうすると、マイクの周りに緑の箱ができて、それが掴む当たり判定となります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/c0fedbda-0b41-4f8c-47eb-c6abf68d0c06.png)

## 5. マテリアルの修正
VCIで使えるシェーダは

- StandardVColor
- UniUnlit

この２種類です。
FBXをインポートすると、たいていシェーダは【Standard】になるかと思いますので
StandardVColorに変更します。

オブジェクトの中（Inspector）にMaterialコンポーネントがあるかと思いますので、こちらのシェーダをStandardVColorに変更します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/bd972a3c-e4c7-e64f-bd4b-c74809d9f1d8.png)

## 6. VCIのエクスポート
これでオブジェクトの準備がだいたい完了です。
rootオブジェクトを選択して ExportVCI-??? を選択してファイルに書き出します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/691a0242-dd56-f426-d8c6-ad0d07c44234.png)

## 7. 出来たVCIをTHE SEED ONLINEにアップロード
バーチャルキャスト内にアイテムを持ち込むため、一度[THE SEED ONLINE](https://seed.online)にアップロードする必要があります。
[THE SEED ONLINE](https://seed.online)のページを開きアカウントを作成した後、右上のアップロードからドラッグ＆ドロップで先ほど作成したVCIファイルをアップロードします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/7c211f8f-5163-b82e-fabb-143fe872a6f0.png)
この時に、アイテムタイプを【小道具】にすることを忘れないでください（ハマりポイント２）

## 8. バーチャルキャストで遊んでみる
バーチャルキャストを立ち上げて、右上の【CONNECT】でTHE SEED ONLINEと連携します。
正しく連携すると、SEEDのプロフィールアイコンに変わります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/22654a26-7751-249a-a81a-f830dfb9c9aa.png)

設定に問題なければアイテムからシードにアップロードしたアイテム（今回はマイク）がありますのでそれにチェックを付けるとマイクが現れて持つことが可能となります。
![20190312-191623_272.png](https://qiita-image-store.s3.amazonaws.com/0/79067/13a86378-75a5-4c6a-4b45-b35117aada4a.png)
※誰がどう見てもマイク

## おまけ. ちょっとだけスクリプトを作ってみる
これだけでは面白くないのでちょっとだけ簡単なスクリプトを作ってみたいと思います。
グリップボタンを押したら振動するようにしてみたいと思います。

先ほど作成段階だった rootオブジェクトの中の
Scriptsのサイズを**1**に
Nameを適当でよいのですが一応【main】に
その他はそのままで、
Sourceのところに以下を貼り付けます。

```lua:main
function onUse(use)
    vci.assets.HapticPulseOnGrabbingController(use, 3999, 10)
end
```
※グリップボタン（USEボタン）を押されたら、3999の強さで10秒間振動する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/79067/5e24c30a-e108-1265-b52e-96f1b5b91c86.png)

これで、グリップボタンを押すと振動するマイクの出来上がりです。

## 最後に

出来たアイテム、公開します。
https://seed.online/items/be3a8cf88dea070d2ea10cc2b1ca71754d1db456cfe1492f43ceaaa80d5cc435

よかったみなさん、このマイクで歌でも歌ってみてください。