見出し画像

【Unity VRChat】アイテムの出し入れをする

多分これが一番簡単だと思います


アイテムの出し入れについて。BOOTHでアイテムを購入するたびオンオフのアニメーション設定しないといけないから面倒くさいなぁ…と思っている方がもしかしたらいるかもしれない。でも実際は


画像のような「新しいフォルダ(実際はempty object)」がメニューでオンオフできるようになっているとき、買ったアイテムを中身に突っ込む(+HandあたりにConstraintsする)だけでセッティングが完成する。
 たとえば剣をここに突っ込んでいるなら、新しい剣と交換することはめちゃくちゃ簡単である。
 世のBOOTHでアイテムは売っててもオン・オフの機能までついてないのは、暗に「こういう階層をつくって管理してくださいね」と各自に委ねられているということであり、また多くの場合、個々のアイテムを直接指定したアニメーションはつけなくても済む。一回だけこういうものを作ってしまうだけで良いのだ。
 「でもArmatureに入れないとボーンに追従しないのでは?Constraintsでは位置調整できないし」と思うかもしれない。そこは新しいフォルダ階層をつくってConstraint用にすることで簡単に解決する。


新しいフォルダの下にフォルダを作る


好きなボーンにくっつけられる

この「固定用ダミー」の下に置いてあるアイテムは自由に位置調整できる状態になっている(「固定用ダミー」の位置自体はArmatureに固定されていて動かせない=固定している)。

アイテム出し入れの基本構造は
フォルダ1
└Constraint dummy
 └(BOOTHで購入したアイテム)
フォルダ2
└Constraint dummy
 └(BOOTHで購入したアイテム)
フォルダ3
└Constraint dummy
 └(BOOTHで購入したアイテム)

のようになる。アイテムはアバターごとに持てる上限数=フォルダー数を決めておいて、使わなくなったアイテムは順次入れ替えてゆくと容量面でも大いに助かる。

上の記事を読んで少し気になったところ(冗長なところ)を補足しておいた。

実際にメニューからアイテムのオンオフを切り替えるフォルダーをセッティングしてみる


まずパラメータの追加

ExpressionsParameterへのパラメーターの追加


メニューから操作できるようにする
同じものをFXレイヤーのParameterにも追加
レイヤーの追加

全部日本語にするのがこだわりポイント

つぎにアニメーションの作成
このようなアニメーションを作成する

0フレーム目:新しいフォルダを非表示に
nフレーム目:新しいフォルダを表示する


2キーフレームで


0(オフ)と1(オン)

アニメーションを1個しか作成しないのは、Motion Timeの0 1の切り替えでオン・オフ実装をするから。
FXレイヤーのパラメーターに次のような変数を追加する(expmenu等には登録しなくてよい)
名前 0 Float 値 0
名前 1 Float 値 1


妖しげな変数名のフロート

Motion Timeのparameterにチェックを付けて、値を0にする(非表示)

Motion Timeのparameterにチェックを付けて、値を1にする(表示)

オンとオフの状態遷移


最後に遷移条件


これでアイテムをオンオフするフォルダを作成することができた。


できた



0や1などの変数はFXレイヤーにしか登録しないローカル変数だが初期値を書き換えない限り他者と同期しているので定数のような働きをする。

応用編として、5つのフォルダが順次に切り替わってゆくような右手(左手)用アイテム出し入れフォルダなどもひとつのアニメーションファイルで実装できる。

おわり。

この記事が気に入ったらサポートをしてみませんか?