simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

VRChatアバターギミック:誰でも持てるオブジェクトをワールド固定する

Expressions Menu からオブジェクトをOn・Offする手順までを前記事に書きました
simplestar-tech.hatenablog.com
前回のヒエラルキーですと、アバター直下に配置したので
このままだとアバターの回転と移動についてきてしまいます
これを誰でも持てるオブジェクトにするため、ワールドに固定する手順を記録します

1.ワールド原点 Transform を Prefab 化

原点無回転で配置した空の GameObject をプロジェクトビューにドロップして完成です

2.Parent Constraint の親をワールド原点 Prefab に設定

Parent Constraint をアタッチしたオブジェクトを作り、Sources に先ほどの Prefab を指定します。

これだけでオブジェクトはワールド原点に固定配置されます(プレイヤーが移動しても動きません)

オブジェクト固定用 GameObject を作成

上記の原点固定のオブジェクトの子オブジェクトもまた、親子関係よりワールドに固定されます
あとは、ユーザーが Grab するアクション中だけ、その握っているオブジェクトの位置となるよう Parent Constraint を有効化し
Grab を外した瞬間に Parent Constraint を無効化すれば、誰でも持てて、手から離すとワールドに固定されるオブジェクトの完成です。

言葉だと伝わり切らない手順もあると思うので、こちらの誰でも持てるアイテム基盤のパッケージを作って公開しました。
細かい手順はパッケージ内容を確かめてみてください。
他人に渡せるギフトコンテナ「SimpleGiftContainer」【VRChat アバターギミック】booth.pm

次回は公開したパッケージの導入方法を詳しく紹介します。