VRCワールドで物を手に持てるようにする設定について。
物をworldに配置しても、物を掴むことができず、テクスチャ表示だけ、そしてアバターがオブジェクトを貫通してしまう。
そんなときは設定を確認してみましょう。

スポンサーリンク

物は作るだけではなく、持てるようにする設定と、周りと同期する設定と、当たり判定を設定しなくてはいけません。

Unityで左のhierarchyの動かしたいObjectを選択の後、右のInspectorの一番下のAdd componetに

VRC_Pickup(持てるようにする)
Rigidbody(VRC_Pickupと一緒に自動追加される:)

空中固定で位置固定する場合、
・rigidbodyでIs Kinematicsにチェックを入れる。Use Gravityにチェックを入れない。(use Gravityのチェックを外すと物が宇宙空間のように浮遊する)
・colliderのIs Triggerにチェックを入れない。物質に応じてPhysics Material設定。

VRC_ObjectSync(周りの人と物の状態を同期するようにする)
AllowCollisionTransferにチェックが入っている場合、グラブバグが起きる可能性があるので外しておく。
(誰かが持ったものを、そのまま他の誰かが取り上げるようにしたい物の場合はチェックを入れる)

Collider(当たり判定。Box ColliderやMesh Colliderを用途に合わせて利用)

を追加します。

そして右のInspectorの一番右上のStaticのチェックを外す。←忘れがち
(Static=静的≒動かないオブジェクトなので)

これで持つことができました!

(参考サイト)

この基本設定以外に細かいことまで、体感的に覚えるにはVRワールドで下の世界に行ってみると良いです。

VRC_Pickup ABC V4.10
https://www.vrcw.net/world/detail/wrld_848b047d-b30a-41fc-bbd4-f38ae5f7cfa8
(VRchatを開いてworldの項目押して右上の検索欄に「yagura」と入れて検索しても可。)

【VRChat】オリジナルワールドを作る【Unity】
http://bibinbaleo.hatenablog.com/entry/2017/11/24/183801

LayersがPickupになってるオブジェクトはAvatarに対しては衝突判定を持たないのでアバターが貫通することがあります。
VRC_Pickupをつけたオブジェクトは自動でLayerがPickupになるからです。

Layers – VRChat 技術メモ帳 – VRChat tech notes
https://vrcworld.wiki.fc2.com/wiki/Layers

[Unity] Unityにおける衝突判定まとめ