[VRChat] unity コライダージャンプをする!

はじめに

 こちらは主の備忘録です。自分用のものですが、参考にしていただけたら幸いです。
 ワールドの設定などで動作しないことがあります。

参考にさせていただいたもの
そうだ、空を飛ぼう。VRChatで空を飛ぶもっとも簡単な方法|ブルージー|note

動作環境

Unity 2019.4.31f1
VCC 1.0.5

使用アセット

フライモーション

使用アバター
3Dモデル『トラスとウェッジ』 - nylonheart - BOOTH

下準備

VCCからprojectを開始していますが、SDK3のアセットからでも同じようにできます。
project 内にアバター本体とシェーダーなどが入っている状態からにしておきます。

コライダージャンプの設置

アバター本体を右クリックしてCraeteEmptyを作成します。
名前は何でもいいですが、ColliderJumpにしました。
コライダーの中心と足の中心が同じになるようにします(デフォルトでなっていると思います)。

大きさは(1,1,1)のままでも大丈夫だとは思いますが見やすいようにyを0.5にしてます。

yを0にするとコライダーダッシュができるようになります。

FXレイヤーの編集

付属しているFXレイヤーを複製しておきます。(Ctrl+Dで簡単に複製できます)

FXレイヤーをAnimatorウィンドウで開きます。ダブルクリックか上部のメニューのWindow> Windows>Animatorを選択します。(トラスちゃんの場合はTolass_FX)

ウィンドウのParameterタブを開き、+マークから新規作成します。今回はBoolで作成します。

名前はColliderJumpにしました。

Layerタブも同じように+から新規作成します。
歯車マークからWeightを1にします。(それ以外は動きません)

黒い格子状のところで右クリックし、Create state> Emptyで2つ作成します。初めに作ったものはオレンジ色になり、2つ目以降はグレーになっていると思います。

オレンジのものは起動時に動作するものなのでこちらをoffにし、グレーの方を on にします。(名前は何でもいいです)
それぞれのStateを選択してWrite Defoultのチェックを外しておきます。(vrchat推奨の設定です)
それぞれのMotionのところに後で作るアニメーションを入れます。

作成したアニメーションをドラッグアンドドロップするか右側の丸っぽいところから選択します。

作ったそれぞれのステートを右クリックしMake Transitionから矢印を引っ張りそれぞれに向くようにします。

矢印をクリックし、Conditions の+マークから追加をします。

左側の選択にさきほどパラメータータブで作成した名前があるのでそれを選択します。

右側の設定では、
offからonに向かう矢印はtrue
onからoffに向かう矢印はfalse
にします。
Has Exit Timeのチェック両方外しておきます。

Expression Parametersの設定

アバターに設定されているExpressionParameterを選択します。(トラスちゃんの場合はAnimationフォルダのTolass_parameter)

Add から作ったパラメータと同じ名前とタイプを追加します。
DefaultとSavedのチェックはどちらでもいいと思いますが今回は外しておきます。

Expression Menu に追加します。
SubMenu でも同じようにできます。

AddControlからメニューを追加します。
TypeはToggle、Parameterには作ったものがあるはずなのでそれを選択します。

最後にBoxColliderのオブジェクトのチェックを外して、通常通りにアップロードすればできていると思います。

アニメーションを作る

Animationウィンドウを開きアバター本体を選択します。
Creat から任意のフォルダーにアニメーションをつくります。

こんな感じでAnimator Controllerが勝手に追加されますが気にしないでください。

off にするアニメーションを作ります。
初めにコライダーにチェックを入れておき、
録画ボタン→コライダーのチェックを外す→録画ボタン→Preview の順にクリック。

黒いボックスにチェックが入っていなければOK。

on のアニメーションも同じように作ります

アニメーションの名前が書いてあるところをクリックし、Create New Clip からon のアニメーションを作る

onの場合は初めにコライダーのチェックを外しておき、録画してからチェックを入れるようにします。

こちらは黒いボックスにチェックがついていたらOKです。


最後にアバター本体のAnimatorのControllerを削除します。(DeleteキーやNoneを選択すれば消えます)あっても問題は無いとは思いますが一応消しておいた方がいいと思います。

おまけ

このままだと落下中に足がバタつくのでアバター本体のAvatar DiscriptorのLowerBodyの上のチェックを外すとバタつきはなくなります。


多機能リュージュちゃんのような飛び方をしたい場合はBoxColliderのあるオブジェクトにAdd ComponentからRotation Constraintを入れます。

Soursesの+から追加しアバターのHeadを選択して、ActiveをクリックしIs Activeにチェックが入ればOKです。

フライモーションの設定

すこし発展した内容。
上で作成したものとは名前が少し違っているかもしれませんがそこらへんは変換して読んでください。

初めに Package > VRChat SDK - Avatar > Samples >AV3 Demo Assets > Animation のアニメーションフォルダーを複製しておき、Controllers にあるアニメーションコントローラーの名前を変えておきます。(LocomotionLayer だけでもいいと思います。)

アバター本体の VRC Avatar Descripter→Playable LayersのBase を先ほど名前を変えたものにします。ない場合はDefault Baseをクリックして選択します。
もとからある場合はそれを複製し名前を変えて編集します。

Locomotion Layer のアニメーターウィンドウのparameterにメニューに先ほどと同じパラメーター名をいれます。

Layer には右クリック>Create State>From New Blend Tree から作成し、画像と同じように矢印をつなげます。

それぞれの矢印は下のように設定します。

Animation > BlendTrees のにある三つのどれかを複製し名前を変え、それを画像のMotion のところにセットします。

インポートしてきたアニメーションを下のようにします。
ほかにもいろいろなアニメーションがありますがほとんどの場合はアニメーションの作者さんが入れ方を説明してくれていると思うのでそちらの手順でもいいです。

これでアップロードすればできるはずです。

さいごに

飛行の使用には注意してください。
ワールドの裏側をのぞいたりなどの予期しない挙動をする場合があります。

さいごまでお読みいただきありがとうございます。
初めて書いた記事なので読みにくい点もあると思います。コメント等でこうしたほうがいいなどがあればよろしくお願いします。

不具合などがあればtwitterまで
梅希(@Baiki_13) / Twitter


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