イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

vrchat ワールド作成 オブジェクトをリスボーンする

++やること

ボールなどが指定したエリアを出たら/入ったら、元の場所に戻るようにする。

 

++やりかた

エリアAに入ったらボールXが指定した場所に戻る・移動したいとする。

エリアAにはtarget_area layer作成して付与し、コライダーをis triggerとする。

ボールXにはvrc_trigger(script)とvrc_pickupを付与する。

(vrc_pickupは物を掴んだり出来るようにするためで、リスボーンそのものとは関係ない)

(エリアではなく、ボール側にvrc_triggerを設定することに注意する。私は最初、逆でやっていて無駄に時間を食ってしまった)

vrc_triggerで、OnEnterTriggerを選択してAddする。

layerに先ほど指定したtarget_areaをセット(これでtarget_areaレイヤーのオブジェクトのみを対象に出来る)

ActionにDestroyObjectを追加する。

(DestroyObjectの設定はこれだけ。DestroyObjectはデフォルトで自身、今回の場合はボールXをDestroyの対象にする)

SpawnObjectを追加する。新たに表示されるSpawnObjectの左側の=ボタンを押す。

展開された項目のprefabにはボールXのprefabを設定し、Locationsにはもとに戻したい場所に設置されたオブジェクトのprefabを指定する

(もとに戻したい場所には空のオブジェクトでも設置しておけばいい)

 

これで、ボールXはエリアAに当たると、DestroyObjectによって自身のオブジェクトを破棄し、指定した場所にprefabで設定されたオブジェクト、つまりボールXと同じオブジェクトが生成されることで、元の場所に戻ったように見ることが出来る。

 

++補足

vrchatでは任意のスクリプトを使うことが出来ない。

使えるのはunityのコライダーとリジッドボディ、vrchatSDKのコンポーネントが大体のようである。