複雑なPickupを設定する
CompSpawnHelper を使用すると、VRCPickup やReturn判定用のColliderが子階層にあるアイテムを、ルート単位でSpawn・Returnできます。
構成例
ComplexItemRoot
├─ PickupObject
│ ├─ VRCPickup
│ ├─ Rigidbody
│ └─ Collider
└─ その他の子GameObject

この例では、ComplexItemRoot を VRCObjectPool へ登録し、同じGameObjectへ CompSpawnHelper を追加します。
1. Poolへ登録するルートを設定する
- アイテム全体をまとめるルートGameObjectを用意する
- ルートへ
CompSpawnHelperを追加する Return Base Goに、Returnトリガーへ入る子GameObjectを設定する- ルートGameObjectを
VRCObjectPoolのPool配列へ登録する

Return Base Go の役割VRCObjectPool へ登録し、CompSpawnHelper を追加するのは、アイテム全体をまとめる親のルートGameObjectです。
Return Base Go には、Returnトリガーへ入るPickup側の子GameObjectを設定します。Spawn時はこのGameObjectを指定地点へ移動し、Return後は位置と回転をリセットします。
SpawnObjectExt は、SpawnしたルートGameObjectから CompSpawnHelper を取得します。CompSpawnHelper は、VRCObjectPool へ登録するGameObjectと同じGameObjectへ追加してください。
2. PickupとLayerを設定する
- 子GameObjectへ
VRCPickup、Rigidbody、Colliderを設定する - Return判定に使うColliderのGameObjectへ、Object Spawn Extension専用のLayerを設定する
ReturnObjectExtのLayerに同じレイヤー番号を設定するReturnObjectExtのPoolsから、ルートを登録したVRCObjectPoolを参照できるようにする
子PickupがReturnトリガーへ入ると、ReturnObjectExt が親階層の CompSpawnHelper を検索し、そのHelperコンポーネントがあるルートGameObjectを非表示にします。
3. 移動方法を確認する
Return Base Go に VRCObjectSync がある場合は、同期用の移動・Respawn処理を使用します。VRCObjectSync がない場合は、ワールド開始時の位置と回転を保存し、Return時にそのTransformへ戻します。
Move Delay は、SpawnしてからHelperコンポーネントが移動を実行するまでの待機秒数です。通常は既定値を使用し、位置が正しく反映されない場合に少しずつ増やしてください。
Return Base Go は、SpawnOffset やObonEasyのTrayItem系コンポーネントを検索する対象にもなります。出現位置と向きを補正する場合は、Spawn時の位置・回転を調整する をご覧ください。
動作確認
SpawnObjectExtからアイテムをSpawnするReturn Base Goに指定した子GameObjectが、指定した出現地点へ移動することを確認する- 子PickupをReturnトリガーへ入れる
- PickupがDropされ、Poolへ登録したルート全体が非表示になることを確認する
- 再度Spawnし、初期状態で利用できることを確認する