TKSPのUnity関連ブログ

Unityに関することで書きたいことを書く.

VRChatアバターにSit判定を設定する[VRChatアバター改変のすすめ その6]

はじめに

こんにちは。
今回はアバターにSit判定を設定して他の人を座らせる方法をご紹介したいと思います。

Sit判定の作成

Sit判定を付与する方法はとても簡単です。以下の2つのステップで簡単に設定できます。

Sit判定の準備

まず、その2で行った物を取り出すアバターを作成します。
f:id:ymtkyorosiku:20211016124928p:plain
この時、アニメーション再生前はCubeが表示されていて、アニメーション再生後にOFFになるように設定する必要があります。
f:id:ymtkyorosiku:20211016125857p:plain

VRC Station 特性をアタッチ

取り出す物に対して、VRC Stationをアタッチします。
f:id:ymtkyorosiku:20211016125306p:plain

Enter,Exitを設定

Create Empty で、取り出す物の中に2つオブジェクトを作成します。
f:id:ymtkyorosiku:20211016125412p:plain

その後、Enter,Exitなどに名前を変更し、VRC Stationに適用します。
f:id:ymtkyorosiku:20211016125545p:plain

こちらをアップロードするとこのような感じで、Cubeをタッチしたときに座るモーションになり、手と頭を動かすことのできる状態になります。

f:id:ymtkyorosiku:20211023170342g:plain

座るモーションの変更

例として立ちアニメーションを設定したアニメーションコントローラーを作成し、アタッチします。
f:id:ymtkyorosiku:20211016133124p:plain
f:id:ymtkyorosiku:20211016133149j:plain

立ちアニメーションに変更されました。

f:id:ymtkyorosiku:20211023170834g:plain

※自由なアニメーションを設定可能ですが、手と頭は動かせてしまいます。

補足

タッチ判定の形

タッチできる形を決めているのはMesh Filterです。無い場合は動かないと思います。
f:id:ymtkyorosiku:20211016130303p:plain

当たり判定だけ表示したい場合は以下の2つの方法があります。

f:id:ymtkyorosiku:20211016130406p:plain
Mesh Rendererを無効にする
f:id:ymtkyorosiku:20211016130424p:plain
Mesh Rendererを削除する

(確認のために前者の方法でいつでも表示できるようにした方がいいかも。後者の場合はマテリアル数が減ります)

座る場所と降りる場所

Enterが座る位置、Exitが降りる位置になります。
Positionを変更することで、簡単に変更可能です。

f:id:ymtkyorosiku:20211016132921p:plain

その他のパラメータ

その4の設置ギミックを使用して、以下の5つの設定を用意して動作確認を行いました。

f:id:ymtkyorosiku:20211023172024p:plain
1.デフォルト状態
f:id:ymtkyorosiku:20211023172050p:plain
2.can use station from station を外す
f:id:ymtkyorosiku:20211023172156p:plain
seatedを外す
f:id:ymtkyorosiku:20211023172245p:plain
4.can use station from station と seatedを外す
f:id:ymtkyorosiku:20211023172655p:plain
5.disable station exitのチェックをつける

1. 普通。
f:id:ymtkyorosiku:20211023173601g:plain

2. 1->2には座った状態で座れるが、2->1は座れない。
右が1で左が2の椅子です。
f:id:ymtkyorosiku:20211023174038g:plain

3. 立つ、降りた後に動けなくなる。(不具合?)

  • > 他の椅子にSitした場合、再び動けるようになるが、それ以外はワールド入り直さないと動けない(アバター変更じゃ直らない)

f:id:ymtkyorosiku:20211023175026g:plain

4. 他の椅子に移れないため、降りてから他の椅子に座ることで足が動くようになる
 2と3が組み合わさった状態。アバターギミックとしては使わないほうが良さそう。
f:id:ymtkyorosiku:20211023180634g:plain

5. 1と全く変わらない。
多分ワールドギミック用の設定なのだろう...
f:id:ymtkyorosiku:20211023181652g:plain

さいごに

以上、VRChatでアバターにSitギミックを設定する方法でした。
簡単に実装できますね。
手と足が動いてしまっても大丈夫なモーションであれば、オリジナルのSit判定がすぐに使えるようになると思います!