見出し画像

【取説】『なでなでハートパーティクル』

特徴

・相手を撫でるとハートのパーティクルが自分の頭から出る
・撫でられると自分の頭からハートのパーティクルが出る
・パーティクルのON/OFFをメニューから操作できます
・ハートパーティクルのテクスチャは4種類

動作条件

1.触る場合は相手、触られる場合は自分のAvatar Interactionsが有効でないと動作しません。
有効状態でも動作しない場合は一旦無効にしてから有効にしてください。(VRC側の同期バグのようです)

2.ContactsのHeadとHandの判定を利用するので、極端に身体または手や頭が大きいまたは小さいもしくは存在しないアバター間での動作はできない可能性があります。

3.アーマチュアやメッシュ(オブジェクト)のスケールが1であることを推奨します。
FBXを出力する際に1になるように設定されていないアバターへ組み込むとパーティクルのサイズがおかしくなります。
ご自身でスケールを可変させたり変更している場合も同様にパーティクルのサイズが変化する点にご注意ください。


仕様

・Receiver x3 ※1
・ParticleSystem x1
・Material x1 ※2

※1 Avatars3.0(SDK3.0)の機能です。
※2 通常の割当は1つ 付属は4つ こちらもSDK3.0のShaderを使用しています

アバターへ適用する


お約束:作業前に必ずバックアップを取ってください。

最新のVRCSDK3-AVATARをインポートしたアバターが入っているUnityProjectに本製品のUnityPackageをインポートします。


4つあるPrefabを全てHierarchyへドロップしてください。



それぞれ4つのPrefabはArmatureへ入れます。
必要に応じてHierarhcy内のアバターはUnpackPrefabを行ってください。

SystemとforHeadは Head直下
forHand.Lは Hand.L直下
forHand.Rは Hand.R直下


LayerとParameterを設定する(ツール)

『VRCAvatars3Tools』の[AnimatorControllerCombiner]を利用することで簡単に設定できます。

パッケージをダウンロードしてインポートします。


メニューが追加されるのでACCウィンドウを出します。


Srcには[KHI_HeartParticleA_Template]をセットしてDstにはアバターのFXレイヤーを指定してください。
"Combine"を実行して完了です。

※実行前にアバターのFXレイヤーを複製してバックアップすることを推奨します。

うまく動作しない場合は下記の手動の項目からチェックしてください。


LayerとParameterを設定する(手動)

ツールが使えなかった場合はこちらをお試しください。

テンプレートとしてLayerを用意しているのでこちらを参考にアバターへそのまま同じように設定します。


Hierarchyからアバターを選択し、InspectorのVRC Avatar Descriptor内の下の方にあるFXへ割り当てられているLayerをクリックすると、ProjectにLayerファイルが選択されるのでそちらをクリックして選択状態にします。


Animatorタブに移動して、Layersタブから+ボタンを押して新しいレイヤーを2つ追加します。
それぞれ[KHI_HeartParticleA_System][KHI_HeartParticleA_Receiver]です。


追加した2つのレイヤーは⚙アイコンからWeightを1にしてください。


Parametersも追加します。
+からBoolを選択して[KHI_HeartParticleA_System][KHI_HeartParticleA_Receiver]を追加します。


テンプレートの内容をドラッグして範囲選択して、Ctrl + Cでコピーします。


アバター側の同じ名前のレイヤーにCtrl + Vでペーストします。

これをReceiverにも行ってください。


レイヤーのコピペがうまいく行かない人へ

EntryからのデフォルトステートがOFFになってしまう場合はデフォルトステートをONになるようにセットします。

Entryを右クリックして[Set StateMachine Default State]を選択


そのままONを選択します


画像またはテンプレートと同じ状態になれば完了


以上で導入は完了です。
システム自体のON/OFFを実装したい方は下記も御覧ください。


メニューへシステムのON/OFFを実装する

注意
3.0メニューを実装しているアバター向けの内容です。

なくても動作します。
不意にハートを出したくない人は設定してください。


VRC Avatar Dispectorの一番下らへんにあるParametersに割り当てられているパラメータを選択


Inspectorタブにパラメータが表示されるので





[KHI_HeartParticleA_System]を[Bool]で
[KHI_HeartParticleA_Receiver]を[Int]で追加します。
枠がなければAddを押して増やしてください。




またVRC Avatar Dispectorに戻ります。
今度はMenuを選択してください。


InspectorからAdd Controlで新しいControlを追加してください。


追加したControlは[ParticleControl]として、TypeはSub Menuにします。
Sub Menuには[KHI_ParticleControl]を指定します。


Sub Menu枠の右端に◎アイコンがあるのでそれをクリック

[KHI_ParticleControl]と入力して割り当ててください。


以上となります。
お疲れさまでした。


位置調整をする

本製品とシステムは両手と頭にReceiverのコライダーが設定してあります。
このコライダーがアバターに自動で組み込まれるHeadやHandのContact用コライダーと接触することで動作します。

もし、「Particleの発生位置がおかしい」「撫でているまたは撫でられているのにParticleが出ない」場合は位置調整を行う必要があります。


適正位置は手を中心とし頭1つ分の大きさです。
Headの判定が頭の中にあるので大きめのサイズじゃないと判定を拾えません。


サイズ調整はScaleなどではなく、絶対にReceiver側の項目から行ってください。
位置調整も同様です。


頭部は相手の手のサイズがまちまちなので、少し大きめにして真ん中に置くことを推奨します。
小さめにすると反応しませんし、大きくしすぎると身長差などで判定を吸われます。


Particle発生位置は頭の中からを想定しています。
空中から放出される場合は調整してください。


こちらはTransformからPositionのみで位置調整します。


Particleを変更する

4つのMaterialを用意しています。


Coreを選択して


Inspectorへ4つのうち1つ好きなMaterialをドロップすることで指定できます。

注意
VRC AvtarSDK3.0がないと動作しませんのでご注意ください。


いいなと思ったら応援しよう!