太古に作ったコライダーがトラブってるVCIを、我武者羅に修正しよう！

[「VCI Advent Calendar 2022」](https://qiita.com/advent-calendar/2022/vci)の3日目の記事です。
## タイトルで何の記事か分かった人
我武者羅に修正しましょう💗

## 分からなかった人
説明します💗

# 古いVCIはコライダーでトラブっている可能性が高い
遡ること2020年末、**バーチャルキャスト2.0.0** からルーム向けに「コライダーレイヤー」がVCIに追加されました。
それまでの古いVCIに入っていたコライダーは自動的に「Default」に割り振られます。（ロケーションの場合「Location」）
コライダーレイヤーはルームでのみ機能します。

:::note
コライダーレイヤーに関する解説ページはこちら
https://virtualcast.jp/wiki/vci/component/unitycomponent/collider (公式Wiki)
https://qiita.com/johnny-um/items/57c509bb1592c6d22f2f (ユエムさんの解説)
:::

コライダーレイヤーのおかげでよりVCIとして制作の幅は広がりました。
しかし、レイヤー設定を間違えたり、スタジオでは問題なかったはずのVCIがルームではトラブルが発生していたり、UniVCIのアップデートに伴う弊害は往々に発生していたり。

起こりうるトラブルの一例は…
## ①装着できない
コライダーに弾かれて装着できません。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/2616c0c7-9d40-cb28-dbbe-fc6460f1de5c.png)

辛うじて装着できたとしても、キャラクターのコライダーに衝突した状態で装着されます。
体が常に弾かれた状態になり、結果体が勝手に一方向に弾き動かされてしまいます。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/4037475c-fbb5-216e-a57a-e11390b310b1.png)


## ②貫通移動できず、壁になってしまう
スタジオではコライダーレイヤーの設定に関わらず、VCIは貫通移動できます。
しかし、ルームではコライダーレイヤーの設定と、「**Is Trigger**」がオフのコライダーの組み合わせで貫通移動が出来ないVCIとなります。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/e08b2cb8-afec-5ab5-c66a-75fdc0effe22.png)



2020年末にコライダーレイヤーが導入された話をしましたが、**それより以前にVCIを制作していた人**や、**今もスタジオ向けにVCIを制作している人**には気づいてない可能性がある仕様です。

ルームでのコライダーのトラブルを回避するには、コライダーに対して何かしらの修正が必要になります。
今回はスタジオでのコライダーの振る舞いが変わらず、コライダーの修正が出来る方法を紹介します。

ちなみにアタシは、2021年3月に一度修正が必要な物全てを済ませました💗

# 手順はそんなに多くないので、我武者羅に修正しよう！

まず修正が必要なVCIをリストアップしましょう。
前提として、コライダーレイヤーについて意識して制作しなかった中で、
* 手持ちの小物系で、キャラクターが貫通することを想定しているVCI
* コライダーの「Is Trigger」をオフにしているVCI

を揃えておいてください。

## ①最新のUniVCIで、Unityプロジェクトを作成する
古いVCIの場合、UniVCIのバージョンを上げておくことも今後の不具合の予防になるので、現行の最新版を使用します。

## ②任意のフォルダを作成する
VCIを展開するため、分かりやすい名前のフォルダを作っておきます。
まとめて修正を行う場合、「2212」といった制作の年/月の数字や、「Drink」といったジャンルの名前にすると分かりやすいです。

## ③VCIをUnityにドラック&ドロップする
Unityのproject内の、先ほど作成したフォルダにドラック&ドロップします。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/d88f46c5-3d97-a017-8f9f-efdfe83ddf6a.png)
このときフォルダ内にテクスチャやマテリアル等のファイルが展開されます。
展開されたテクスチャは恐らく元ファイルより劣化していきます。
(ですがアタシは、テクスチャが劣化したとしてもコライダートラブルが修正される方が重要だと考えています💗)

:::note
あまり多く語られることはありませんが、VCIは単品で保管しておけばいざというときのバックアップに使えます。
Unityに放り込めばいつでも修繕や改変ができますので、分かりやすく整理して保管するといいでしょう。
:::

## ④コライダーレイヤーを設定する
VCIObjectが設定されたオブジェクトを選択し、コライダーレイヤーの設定をします。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/c8caecd4-65eb-aeac-9c77-c174a246b412.png)


* **VCIPickUp**　（体と一切衝突しない）
* **VCIAccessory**（キャラクターからぶつかって衝突はしない※）

いずれかを設定します。
※体の各パーツに対してコライダーがぶつかってきた場合は衝突します。
**Accessory**という名前ですが、設定によっては必ずしも装着アイテムに適したレイヤーではないので注意しましょう。

子オブジェクトも設定するか聞かれるので、一括設定しちゃいましょう。
（個別に設定したい場合は頑張ってください💗）

## ⑤VCI出力してアップロードする
出力はいつも通りやればOKです。
保存するときは「Export」フォルダを用意するなど、上書きすることがないようにしましょう。


# ね、簡単でしょ？
VCIの修正をするのって、とにかく面倒くさい！と決めつけてやってない方もいらっしゃるかもしれません。
でもVCIを何度か作ったことがある人であれば分かる通り、Unityプロジェクトを用意して出し入れするだけで終わる作業です。
これをやるだけでVCIの延命ができ、自分のVCIを整理するきっかけになりますよ💗

# 宣伝
冬キャスマーケットは1月1日から出展募集開始予定です💗
Twitter：https://twitter.com/virtualcast_fes
![casmarket-11-poster-wide-nologo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938265/79af6c26-1932-2c76-4c85-7fa6685881b5.png)