見出し画像

【VRChat】EXメニューなしに物を出し入れしたい!(導入方法)

23/10/04 内容一部修正しました

[追記]
応用としてこちらの方法もおすすめです。誤操作が減ります。本記事を読んだ後に読むとわかりやすいかもしれないです。


こんにちは!!!
魔法と眼鏡とロポリこんちゃんが好きなVRC民のじゃこです。

今回は↓のように、
グラブする(トリガーで握る)ことで物を手に持つことができるアバターギミックの導入方法について解説します。

2本立ての記事です。
『導入方法』だけで導入できます。
『解説と応用』は詳しく知りたい方向けです。

前提条件

  • Unity2019.4.31f1

  • VRChat SDK -Avatars 3.1.10

アバターのアップロード方法や、手の形の変更方法は割愛します。

基本的にはQuest対応です(たぶん)。非対応の項目は明記します。

導入方法

今回は、ハオラン君にホルスターの銃をEXメニューを使わず出し入れしてもらいます。

今回は↓を使用させていただきました。素敵なモデルを本当にありがとうございます。
オリジナル3Dモデル ハオランーHAOLAN  (かなリぁさんち 様)
【無料品】ハンドガン (virtualgaroth様)

まず、アバターと出し入れする物がインポートされたUnityファイルをご用意ください。

(1) 出した状態、しまった状態の物の配置

「ホルスターに格納された銃」と「手に装備された銃」を配置します。

装飾品を身に着ける改変作業と一緒!
デフォルトの状態になるように表示・非表示を設定します。

(2) PhysBoneを使ったスイッチの作成

銃の表示・非表示を切り替えるためのスイッチを作成します。

①スイッチ用Objectの作成

このSphereが出し入れを制御するスイッチになります!
Sphereは操作しやすい場所に置きましょう。服の裾などの他のPhysBoneが被らないように!
(画像にはMeshRenderなどありますが、間違いです。実際はありません。)

②スイッチ用PhysBoneの設定

よく揺れものに使われるPhysBoneですが、今回はスイッチとして活用します。
赤文字に注意!このParameter名は後で使います。各値の詳しい解説はこちらのサイトがとてもわかりやすくておすすめです。

(3) 物の出し入れアニメーションの作成

銃の表示・非表示を切り替えるアニメーションを作成します。

①取り出す用Animationファイルの作成

これでAnimationファイルができます。

②取り出す用Animationの編集

これでAnimationファイルの編集ができるようになります。
この操作で新たに作成されるコントローラーファイルは作業終了後に削除して大丈夫です。
◉を押すとアニメーションの録画がはじまります。
録画中に関係ない操作をしないように!

③しまうAnimationの作成

取り出すのと逆のAnimationを作ることで、しまうAnimationとなります。

これで「取り出すAnimation」「しまうAnimation」が完成しました!
ここから少し難しいので、休憩をはさみながら読んでくださいね。

(4) FXレイヤーコントローラーの編集

FXレイヤーコントローラーを作成します。まず、編集用のコントローラーを複製して作りましょう!

Backup☆Your FXレイヤーコントローラー

(4)-1 PhysBoneパラメータの設定

スイッチがグラブされたら値の変わるパラメータを設定します。

④は『(2)PhysBoneを使ったスイッチの作成』でつけたパラメータ名です。
大文字小文字完全一致です!

(4)-2 出し入れ切替えのアニメーションレイヤーの作成

スイッチをグラブして離す操作を受けて、『入れる⇔出す』を切り替える仕組みを作ります。

ここで作成したAnimation Layerに物の出し入れの構造を作成します。
Animation Layersについてはこちらのサイトがおすすめ
左のStateが『銃をしまった状態』、右のStateが『銃を手に持った状態』です。
わかりやすいように名前を変更しましょう。
『スイッチをグラブ』したら【オレンジ色のステートから上のNew Stateに遷移】して、
『スイッチを離し』たら【上のNew Stateから手に持った状態へ遷移】します。
下のNew Stateも同じです。
遷移にかかる時間の設定です。これをしないと、入力感度がもっさりします。
ステート遷移の条件設定です。
今回は先に作ったスイッチをグラブしているか、していないかを遷移条件にします。
ステート遷移の条件設定です。
true=『スイッチがグラブされている』、false=『スイッチがグラブされていない』
切替によるパラメータの制御設定です。↓に続きます。
これで、『gun_hand』というパラメータが右のStateに入った時【true】に、左のStateに入った時【false】に変わるようになりました。

これで、『スイッチをグラブ』→『スイッチを離す』という操作で、出す⇔しまうを切り替えられるようになりました。

(4)-3 Animation出力のアニメーションレイヤー作成

最後に、『銃を出す』『銃をしまう』のAnimationを出力できるようにしましょう!

Animation出力用のアニメーションレイヤーを作成します。
オレンジ色のステートがデフォルト状態のAnimationになるようにします。
Stateを右クリック→『SetAsLayerDefaultState』でオレンジ色にできます。
『物を出す』『物をしまう』の切替条件を設定していきます。
アニメーションが切り替わる時間などを設定します。
(4)-2で作成した内容でアニメーションの切替が行われるよう設定します。

(4)-4 作成したアニメーションレイヤーの適用

今回作成したFXレイヤーコントローラーをアバターに適用します。
今回の改変によりバグが起こった場合は、元のコントローラーを適用すれば元に戻ります。
今回新たに作成したパラメータをEXパラメータに登録します。
EXパラメータについてはこちらのサイトがおすすめです。
大文字小文字完全一致です!

これで完成です!おつかれさまでした!

解説と応用

長くなっちゃったので、記事を分けました。
今回使ったコンポーネントの簡単な解説と応用について書いてあります。

こんなこと書いてます

ぬるっと取り出す
ほっぺみょーん

さいごに

最近たまたま、銃の出し入れについて聞かれることが重なったので、このような記事を書いてみました。

でも、銃のことは全然わからないので、好きな人から「構え方とか違う!」とか怒られないかドキドキしながら作ってます。間違ってても許してね!


今回、理屈はなるべく減らして、具体的なUnity操作のみに絞って書くことを意識してみました。逆にわかりにくくなってたらごめんなさい。

もし、記事の内容に間違いや、より良い方法あれば、教えてもらえたら嬉しいです。


書き始めたら楽しくなっちゃったので、またこういった解説記事を書きたいと思っています。

最後に、ここまで読んでくれて本当にありがとうございました!


今回の記事は一部tofuさんに教えてもらった方法を参考にさせてもらいました。tofuさんありがとー!

参考にさせていただいたサイト

PhysBone VRChat アバター改変 AvatarDynamics 刀の抜刀納刀【VRChat】unity最強解説の笹田つるぎ様)

【VRChat】PhysBoneの設定方法・Componentについて (しぐにゃもブログ様)

【VRChat】Avatars3.0の基礎、アニメーターについてのおさらい☆
【Avatars3.0】Avatars3.0の仕組みについて!VRChatから内部の動きの解説 (めかにゃんこ様)


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