アバターにContactで物を持ったり身につけたいときの、両手+任意箇所の3箇所遷移(EXメニュー対応)
※めんどいです EXメニューで操作できるようにする設定がいらない場合はもうちょっと単純ですが、やっておくと写真撮影のときとか楽だと思うのでやっといたほうがいいです
※Unityのバージョンは2019.4.31f1、VRCSDKのバージョンは3.1.10です。その他のバージョンで動かない可能性があります。
まず、この記事は「右手or左手or任意の箇所にコンストレイントしたい+コンタクトで動かしたい」という場合を想定しています。吸っているタバコや被っている帽子をContactで手に持ちたい場合の設定です。
なお、ある程度オンオフアニメーション等を追加したことがあることを前提に話しているので、わからないことがあればそういった記事を先に読んでいただいたほうがわかりやすいかと思います。
それでは始めていきます。使用するのは自作アバターですので他アバターとは勝手が違う可能性がありますがご了承下さい。今回はこの星を手元に持ってくるものを使って説明します。
![](https://assets.st-note.com/img/1670944970413-7fY3crPJUX.png?width=1200)
1. Parent Constraintの設定
まず、使用したいオブジェクトをコンストレイントする場所を作成します。
Headのボーンを選択し、Create Empty Childsで空のオブジェクトを作成。口の位置に持っていきます。帽子なら頭とといった感じに、くっつけたい場所に持っていってください。もし「腰に剣をくっつけたい!」とかの場合はHipsに。好きな場所に置いてください。
同じように、右手、左手にも空オブジェクトを設置していきます。
![](https://assets.st-note.com/img/1670945365800-NtJgTk8sGA.png)
![](https://assets.st-note.com/img/1670945482999-0z8I6B0kh2.png?width=1200)
次に、コンストレイントしたいオブジェクト(今回は星)にParent Constraintコンポーネントをアタッチします。Sourcesに先程置いた空のオブジェクトを入れていきます。下図のように設定できたら、コンポーネント右上のZeroをクリックしておきましょう。
![](https://assets.st-note.com/img/1670945687835-QLyJmScFpI.png?width=1200)
2. アニメーションの作成
オブジェクトの位置を切り替えるためのアニメーションを作っていきましょう。
適当にフォルダを作ってアニメーションを作成し、アバターに適用してください。
アニメーションタブでAdd Propertyを選択し、
(追加したいオブジェクト)→Parent Constraint→Souce.Array.Data[数].weight
をある分だけ追加していきます。今回は3つなので、[0],[1],[2]があると思います。
これらはそれぞれ、Parent ConstraintコンポーネントのSourcesの横にある数値に対応しています。この数値が1の場所があれば、その場所にコンストレイントする、ということです。
ということでそれぞれ作っていきます。一つ作ったらあとは複製して数値だけ変える単純作業です。
![](https://assets.st-note.com/img/1670946704333-MWga8KppG4.png)
![](https://assets.st-note.com/img/1670946774378-Tgym4ajteM.png)
![](https://assets.st-note.com/img/1670946797850-PTs3CUpM2b.png)
あくまでこれは僕の順番がこうだっただけなので、Parent ConstraintのSourcesの順番が違う場合はここも違ってきます。ちゃんと確認しておきましょう。
3. Contactの設定
オブジェクトに触れているかどうかを確認するのがVRC Contact Receiver/Sender等の機能です。
Contact Senderを使う場合
Senderは判定を手や頭などのVRCであらかじめ設定されている場所以外に作りたい場合に使います。今回は「頭の横の空間で手をロックンロールにすることでオブジェクトをフリー枠に動かす」という設定にしたいのでSenderを使っていきます。たばこや帽子などはSenderを使わずにやったほうがいいかもしれません。その場合は少し下のContact Receiverの設定まで飛ばしてください。
HeadのボーンにVRC Contact Senderコンポーネントをアタッチします。オリジナルの判定を作りたい場合、Collision TagsをCustomにして、適当に名前をつけてください。
![](https://assets.st-note.com/img/1671235410934-lHqIQW8RFz.png?width=1200)
Contact Receiverの設定
くっつけたいオブジェクトに、VRC Contact Receiverを設定していきます。
今回は星にボーンがあったのでルートにアタッチしてしまいましたが、多分さきほどParent Constraintをアタッチした場所で大丈夫だと思います。
Contact Receiverは3つ用意します。Collision TagsのAddを押して、Hand Lを選択。その下のReceiverのParameterに適当に名前を入れます。この名前は後で使います。コンポーネントをコピペして、右手と頭も作ります。ちなみにRadiusはオブジェクトより1~2回り大きめにしておくとQuest2などのインサイドアウトでも動かしやすいと思います。
![](https://assets.st-note.com/img/1671233252809-jO5tY7czaA.png?width=1200)
4. EXメニューの設定
今回はEXメニューでも操作できるようにしたいので、それぞれ設定していきます。まず。EX Menu ParameterでAddを選択し、新しくIntを作ります。StarPosとしました。わかりやすい名前にしておいてください。
![](https://assets.st-note.com/img/1670947980311-KIcVdjQxB3.png)
ExMenuの適当な場所に、新しいコントロールを追加していきます。Add Controlをクリックして、以下のように2つ作ってください。
![](https://assets.st-note.com/img/1670948112734-fqH1AUon3n.png)
5. Animatorの設定
さて、FXレイヤーの編集に移りましょう。混乱すると思います。僕も混乱しました。画像多めに説明していきます。
Animatorに移動したら上のタブからParametersに移動して、新しくパラメーターを作っていきます。形式はIntで、それぞれ工程3で作ったReceiverのParameterの名前と、4で作ったParameterの名前と同じものを4つ作ります。
![](https://assets.st-note.com/img/1671233362970-Q28MwR0BgF.png)
上のタブからLayersに戻って、新しいレイヤーを作ります。
また、歯車マークからWeightを1にしておきます。割と忘れやすいやつですね。
![](https://assets.st-note.com/img/1670948529422-VdKa981tGY.png)
工程2で作ったアニメーションをD&Dして追加していきます。フリー枠のアニメーションを先に追加しておけば以下のように繋がってるはずです。
![](https://assets.st-note.com/img/1670948929649-tG42pBXCOi.png?width=1200)
それぞれのアニメーションを右クリックして、Make Transitionで以下のようにつなげます。方向に注意してください。
![](https://assets.st-note.com/img/1670949060998-dQrkEX9g7F.png?width=1200)
それぞれの矢印を選択して、以下のように設定していきます。
![](https://assets.st-note.com/img/1670949117270-K1GAs7IVNP.png?width=1200)
![](https://assets.st-note.com/img/1670949203970-5xwp7QgH27.png?width=1200)
![](https://assets.st-note.com/img/1670949303028-54PslFU9Cq.png?width=1200)
![](https://assets.st-note.com/img/1670949424312-YnmPFFkjgs.png?width=1200)
![](https://assets.st-note.com/img/1670949452212-KtyfPbrlxL.png?width=1200)
ここまで作ったら、それぞれのアニメーションを複製します。わかりやすく末尾にContactとかつけておきましょう。これにもMake Transitionで矢印を作っていき、以下のようにします。
![](https://assets.st-note.com/img/1670949829564-D2rlYvhWg5.png?width=1200)
またそれぞれの矢印に設定を入れていきます。
![](https://assets.st-note.com/img/1670950082818-zQIRyWlTF1.png?width=1200)
![](https://assets.st-note.com/img/1670950146149-2S0O1TzWTT.png?width=1200)
![](https://assets.st-note.com/img/1671233513980-kXeLnTXfev.png?width=1200)
![](https://assets.st-note.com/img/1671233763443-U0nXelDmmK.png?width=1200)
![](https://assets.st-note.com/img/1671233796009-sWAvlF9hag.png?width=1200)
![](https://assets.st-note.com/img/1671233835612-tPwchiSW9T.png?width=1200)
![](https://assets.st-note.com/img/1671233895340-pslYTKaD4P.png?width=1200)
さらに矢印を追加していきます。
![](https://assets.st-note.com/img/1671234200662-NWiC8sOugg.png?width=1200)
![](https://assets.st-note.com/img/1671234266091-SwvrVUP0eg.png?width=1200)
![](https://assets.st-note.com/img/1671234327382-XDG7VrrPSn.png?width=1200)
![](https://assets.st-note.com/img/1671234373298-dPLNQN9KT0.png?width=1200)
![](https://assets.st-note.com/img/1671234437334-fcKlx4UovY.png?width=1200)
さて、ここまで来た皆さん、お疲れ様でした。最後に一番大事なことをやりましょう。
![](https://assets.st-note.com/img/1671234544862-DXyWu57XxL.png?width=1200)
6つ全部のアニメーションを選択し、日頃の恨みを込めながら、Write Defaultsのチェックを外しましょう。
うまく行っていれば、これでできるはずです。
この記事が気に入ったらサポートをしてみませんか?