VRCでConstraintを使ったワールド固定&ピックアップ(Unity2018対応)
はじめに
4/2にVRCのアップデートがあったことでConstraintコンポーネントが使用できるようになりました。
Constraintについての基礎知識はこちらを見てください。
※この記事は
・VRCSDK2とUnity2018でのアバターアップロードができる。
・Constraintの基礎知識がある。
ことが前提になっています。
Constraintのワールド固定&ピックアップ
このConstraintを使用したワールド固定&ピックアップは、アバターからアイテムを切り離せる、ワールドに設置できるギミックになります。
FixJointを使用したワールド固定がありましたが、このFixJointのワールド固定はワールドの設定によって壊れることがありました。
しかし、Constraintを使用したワールド固定は、ワールドの設定で壊れる事がないのが大きなメリットです。
※Battle Disk等のワールドで検証しています。
アバターにギミックを入れてみる(本題)
それでは本題です。
今回はあすかろさんのかわいいかわいい謎生物を使用して導入していきます。
①hierarchy上で右クリック→CreateEmptyで画像のような構造を作る。
②名前をわかりやすくする。
下記のように名前を変えておきましょう。
アバター本体
-メッシュ
-ボーン
-World_C
-Pickup_C
-Gameobject
-World_Point
-Pickup_Point
World_C以下が固定、ピックアップする機構で、
World_Pointがワールド固定位置、
Pickup_Pointがピックアップする位置になります。
③World_CとPickup_CにConstraintを入れる。
World_CにPosition ConstraintとRotate Constraintを、
Pickup_CにParent Constraintを入れましょう。
ついでにinspector上でSoucesの+ボタンを押して、List is EmptyからNoneの状態にしておきましょう。
④World_Cのコンポーネントを編集する
下の画像のように編集しましょう。
⑤Pickup_Cのコンポーネントも編集する。
下の画像のように編集しましょう。
⑤ワールド固定するオブジェクトを入れる。
今回は例としてCubeを固定します。
下記のように、GameObjectの中にCubeを入れましょう。
アバター本体
-メッシュ
-ボーン
-World_C
-Pickup_C
-Gameobject
-Cube
-World_Point
-Pickup_Point
⑥オブジェクトの位置調整をする
今回は右手にピックアップします。
Pickup_C以下のオブジェクトとPickup_Pointを、ピックアップしたいボーンの階層に持っていき位置を両方とも合わせましょう。
※Pickup_C以下の位置を合わせた後に、Pickup_PointをPickup_Cの子にして座標を0にするのがオススメ。
⑦Pickup_CをWorld_Cの階層に戻す。
位置合わせが終わった後は、Pickup_C以下のオブジェクトのみWorld_Cの階層に戻しましょう。
Pickup_PointはHandの階層に残したままでOKです。
下の画像のようになっているかと思います。
⑧ピックアップするアニメーションを作る。
フォルダで右クリック→Create→Animationでアニメーションファイルを作ります。
Ctrl+Dでアバターをコピーし、コピーしたアバターにAnimaitonファイルを入れて、下記のように編集しましょう。
Pickup_CのParent ConstraintをActiveにするとピックアップするようになっています。
作業が終わったら、AnimationOverrideにPickupのアニメーションを入れ、アップロードして終了です。
おつかれさまでしたー!
この記事が気に入ったらサポートをしてみませんか?