【VRChat】Pickupオブジェクトを整列させる、指定の場所へリスポーンさせる

#はじめに
すでにあるギミックですが理解したかったので自作しました。メモですが記事を残しておきます。
無駄や間違いが含まれている可能性がありますので、ご指摘いただけるとありがたいです。

https://youtu.be/EWNUUkKMZ0w?t=39
この動画の00:39あたりで使っているギミックです。

###環境
unity: Unity 2018.4.20f1
VRCSDK2: 2021.02.23.11.41


#使うもの
用意するもの

- Pickupオブジェクト
- ボタンオブジェクト

使うもの

- VRC_Scene Reset Position
- アニメーション(Animatorウィンドウをsceneのところに追加しておく)

※正確にはVRC_Scene Reset Positionは位置・サイズ・角度を初期値、もしくは指定したオブジェクトと同じ値にするものである

#作り方
##1.Pickupオブジェクトの設定
![210319_03_1-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/489e1c14-b80f-d532-8f14-a46221f2e953.jpeg)
[好きなcollider][VRC_Pickup][VRC_Object Sync]を付与
colliderはIs Triggerにチェックを入れる

[VRC_Scene Reset Position]を付与
Remove Velocity: チェックを入れると移動速度がゼロになる

##2.ボタンの設定　第一段階
![210319_03_2-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/89c3c992-d704-003f-aab0-8ce136b35ad1.jpeg)
[好きなcollider]を付与。Is Triggerにチェックを入れる

[VRC_Trigger]を付与
OnInteract→AlwaysUnbuffered
Interaction Text: (わかりやすく書く)
ここで一旦保留にしておく

[Button]を付与する
Transition: None
Navigator: None


##3.アニメーションを作る
![210319_03_3-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/2ffec212-fce7-1b95-3e6a-31802eb555c3.jpeg)
ボタンオブジェクトを選択した状態でanimationウィンドウのCreateを押す
適当な場所に保存する。Assetsの下にフォルダを作るといいかも

![210319_03_3-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/33d22177-94c7-ce5a-292b-cf81542e6c77.jpeg)
+を押す
Function: Press()


##4.ボタンの設定　第二段階
[Button]のOn Click()を設定していく
![210319_03_4-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/5c8cf897-5da8-5785-8c3f-861603cf5797.jpeg)
Runtime Onlyの下にボタンオブジェクト自身を入れる。FunctionはAnimator→bool enabled
+で欄を増やす
Runtime Onlyの下にPickupオブジェクトを入れる。FunctionはVRC_Scene Reset Position→Reset Position()

##5.アニメーターの設定
![210319_03_5-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/fff9923c-b130-8f43-f18c-487b91ab2831.jpeg)
Animatorウィンドウの左上Parametersを増やす
+→bool　名前をつけてチェックを入れる

**Any Stateの設定**
![210319_03_5-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/69d947cb-b801-2b50-5331-ed179ebb6be7.jpeg)
Any Stateを右クリック、Make Transition　オレンジ色のNew Animation(※ちゃんと名前をつけよう)につなげる
Transitionsを開き画像のように設定する
Conditionsをtrueにする

**New Animationの設定**
![210319_03_5-3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/c25fe762-fc87-c70f-6351-bc3fd3264bdd.jpeg)


Entryはそのままでよい

##6.ボタンの設定　第三段階
保留にしていた[VRC_Trigger]のつづき
![210319_03_6-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/727540/f5a91f88-3746-3b25-152f-b1241848f712.jpeg)
Actions: SetComponentActive
Receivers: (ボタン自身)
Component: UnityEngine.Animator
Enable: True

#指定の場所へリスポーンさせたいとき
[VRC_Scene Reset Position]は特に指定しないと元あった位置へリスポーンする。
Positionにオブジェクトを設定するとそこへリスポーンさせることができる。これはPickupオブジェクトなど移動するものも指定できる。
今回のワールドは1つだけ違う場所に初期配置されているものを、ほかのオブジェクトとおなじ列に並ばせるため、Mesh Rendererをオフにしたダミーオブジェクトを用意した。

#参考

- [uGUIイベントを使ってVRC_Scene Reset Positionを動かしてみた。](https://www.youtube.com/watch?v=VnlFv9mPUg0)
- [VRC_SceneResetPosition - VRChat 技術メモ帳 - VRChat tech notes](https://vrcworld.wiki.fc2.com/wiki/VRC_SceneResetPosition)
- [VRC_Starter Kit](https://booth.pm/ja/items/979837)
- [ピックアップお片付けボタンprefab](https://booth.pm/ja/items/1310378)