モノの出し入れをExpressionメニューで管理する (2022/04/01ちょっと修正)

前提
・書いてる人はUnity歴半年くらい
・VRChatで使うことしか知らない
・販売アバターのアップロードが出来た方向け

画像1


Unityの画面の名前
 メイン画面 ゲーム内で最終的にどう見えるかの情報
  アセット データ類の置き場
ヒエラルキー シーンに出ているものを階層で表示したもの
インスペクタ アセットやヒエラルキーで選んだものの詳細設定をする場所


☆最終目標→モノの出し入れをExpressionメニューで管理する

 目標達成までのステップ
・モノを持たせる(割愛)
・モノが出る、消えるをアニメーションファイルに録画する
・作ったアニメーションファイルをアニメーションコントローラに置く
・Expressionメニューで作動させるためのパラメーターを設定する

・モノを持たせる
ー書くと長くなるのと調べたらいくらでも出るので割愛しますー


・モノが出る、消えるをアニメーションファイルに録画する

画像2

今回は右手に持ってる銃の出し入れを例に説明します
アセットの適当な場所で右クリック、CreatでAnimationを作る
ヒエラルキーのアバター名選んでCtrl+Dでコピーを作る

画像3

コピー体のArmature階層を開いていき銃の項目をクリック
銃のインスペクタから非アクティブにする(角のチェックマークを外す)
※出し入れするものが服等でDynamicboneを含む場合はDynamicboneも非アクティブにする
※非アクティブにするとメイン画面からも消えてヒエラルキー上では青字が薄くなる

画像4

先ほど作ったアニメーションファイルをコピー体にD&Dで入れる
入れるとアニメーションコントローラが自動で一つ作られる(今回は使わない)
アニメーションファイルを開く、別ウィンドウで開くはずなのでサイズ調整をして
ヒエラルキーとインスペクタが見えるように配置する

画像5

ヒエラルキーのコピー体を選んだ状態で録画ボタンを押す
録画状態で先ほど非アクティブにした銃をアクティブにする(チェックを入れる)
録画ボタンを再度押して録画終了

作ったアニメーションはアセットでファイル名をゆっくり二回クリックするとリネームできるので
gun_ONなどにする
OFFにするアニメーションも必要なのでgun_ONをCtrl+Dで複製してgun_OFFにリネーム
gun_OFFをダブルクリックで開いて1の箇所を0に変える

※コピー体及び自動で作られたアニメーションコントローラは以後使わないので削除してOKです

・作ったアニメーションファイルをアニメーションコントローラに置く

画像6

販売アバターの場合既にFXファイルがあるのでそれを探す
ヒエラルキーでアバター名を選択、FXに設定されているファイルを選ぶとアセットのその場所が開く
そのFXファイルを開く

画像7


既存のレイヤーが色々あるが気にせずに右上の+ボタンからNewLayerを作り適当にONOFFと名前を付ける
レイヤーの歯車マークからWeightを1にする

画像8

このレイヤー内で右クリックをしてCreat、Emptyを選ぶとオレンジのEmptyが出る

画像10


ステップ1のONとOFFのアニメーションファイルをこのレイヤーの画面内にD&Dで置く
置いた灰色の四角をクリックするとインスペクタに詳細が出るので2つともWriteDefaultsのチェックは外す

画像9

Emptyを右クリックしてMakeTransitionを選ぶと線が伸びるのでONと繋ぐ
同様にON→OFF、OFF→ONと計3本を繋ぐ
繋いだ線を選ぶとインスペクタに詳細が出るのでHasExitTimeのチェックを消す
TransitionDurationも0.1に変える

アニメーションの遷移については すごろく をイメージして理解する
現在は白い線に遷移条件が設定されていないのでこのままアップロードすると銃が出たり消えたりを高速で繰り返すことになる
このあとExpressionを設定してExpressionの指示があれば銃が出る(消える)という動きをするように設定していく

画像11


画面上部のParametersを開き+ボタンからIntで一つ追加する
Boolは0か1の二択、Intは整数全て、Floatは小数点で0%~100%で変化する
Triggerは特殊なので良く知らない……
出る、消すの2択なのでBoolかIntどちらでも良いが拡張性を考えてIntを使う

Parameterの名前も何でも良いがこの後全く同じ文字列を引用するので大文字、小文字の区別も意識しながら分かりやすいものを付ける
※今回は説明のためにgun_ON_OFFと設定したが長いのでgunとかで良い

画像12

Parameterを設定したら白い線のインスペクタに戻りconditionsで+キーを押し条件を追加する
①参照するパラメータ][②=、≠、≧、≦][③数値
という構成になっていて今回は
①にgun_ON_OFF ②にEqual ③に1と設定した
つまりEmptyからgun_ONに遷移する条件はgun_ON_OFF1になった時
同様にON→OFFの遷移条件はgun_ON_OFF0になった時
OFF→ONはgun_ON_OFF1になった時という設定にした

・Expressionメニューで作動させるためのパラメーターを設定する

画像13

FXを探したときと同様にExpressionsのMenuとParameterを探す

※未設定の場合はVRCSDK3の中にExamples3-Expressionsの中にあるのでコピーしてアバター名+Menu、Para等わかりやすくリネームして画像と同じように設定する

画像14

Parameterを開き先ほどのステップで設定したのと全く同じ文字列を入れる
Int、Boolも揃える、Defaultは0、Savedはワールド移動した際に初期値に戻るか、引き継ぐかの設定
※服はSavedにチェックを入れる、武器類や派手なパーティクルはSavedの
チェックを外すで良いと思われる

画像15

Menu側の設定
AddControlで一つ増やす
NameはVRC側で表示されるスイッチの名前
Iconは適当にそれっぽいのを選ぶ
TypeはToggle(一度ONにすると指を離してもONのまま)
Parameterは上記で設定したものが選択肢で出るので選ぶ
Valueにはスイッチを入れると銃が出るようにしたいので1

※Toggleのスイッチは切ると0に戻るのでONのスイッチを作れば
OFFにするスイッチは必要ない


終わり

アップロードしてテストして問題が無ければ終了、なんか上手くいかなければ詳しいフレンドさんや私に聞いてください
説明の抜けてる箇所があれば直します


更にやりこみたい
・右手のモノAがONになったらモノBは自動でOFFになる、排他設定

無題

簡単に書くと画像のような感じでNewから2方向のONに伸ばす
ONの条件はA方向がItem=1、B方向がItem=2
個々のONからOFFへの遷移はAのON→AのOFFがItem≠1、その後自動でExitに移動するという流れ
Expressionで1を入れるとAのONに遷移、
その後2に切り替わると≠1の条件よりAがOFFになる
Exitへの遷移は条件なし(条件なしの場合はHasExitTimeのチェックは有)
ExitからEntryに移動して2になっているので下のONが再生されるという流れです
この方法は後から=3、=4と足していけるのがメリットです

無題

※追記
この組み方だと=0の時にオレンジのIdolで止まってしまい表情などが表示されないようなので上図のように=0の時にも何もないステートに遷移するように組む必要がありました
このように修正をお願いします

※服などの場合
上記の方法だとOFFの瞬間があるので服は適していません
服でやる場合はアニメーションを録画する際に

無題2

このように排他設定したいもの全てを1つのアニメーションに録画し複製して使います
3種類の排他ONOFFの場合はAのみON、BのみON、CのみONの計3つ、4種類なら計4つ用意しておきます
FXレイヤーはEmptyを最初に作らずに

無題4

こんな感じに作ります、水色のAnyStateはほかの全部と自動で繋がっているのでシンプルなレイヤー構成に出来ますが設定ミスでおかしな挙動になりやすいので注意しましょう

本当に終わり

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