#はじめに
すでにあるギミックですが理解したかったので自作しました。メモですが記事を残しておきます。
無駄や間違いが含まれている可能性がありますので、ご指摘いただけるとありがたいです。
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オブジェクトの設定
[好きなcollider][VRC_Pickup][VRC_Object Sync]を付与
colliderはIs Triggerにチェックを入れる
[VRC_Scene Reset Position]を付与
Remove Velocity: チェックを入れると移動速度がゼロになる
##2.ボタンの設定 第一段階
[好きなcollider]を付与。Is Triggerにチェックを入れる
[VRC_Trigger]を付与
OnInteract→AlwaysUnbuffered
Interaction Text: (わかりやすく書く)
ここで一旦保留にしておく
[Button]を付与する
Transition: None
Navigator: None
##3.アニメーションを作る
ボタンオブジェクトを選択した状態でanimationウィンドウのCreateを押す
適当な場所に保存する。Assetsの下にフォルダを作るといいかも
##4.ボタンの設定 第二段階
[Button]のOn Click()を設定していく
Runtime Onlyの下にボタンオブジェクト自身を入れる。FunctionはAnimator→bool enabled
+で欄を増やす
Runtime Onlyの下にPickupオブジェクトを入れる。FunctionはVRC_Scene Reset Position→Reset Position()
##5.アニメーターの設定
Animatorウィンドウの左上Parametersを増やす
+→bool 名前をつけてチェックを入れる
Any Stateの設定
Any Stateを右クリック、Make Transition オレンジ色のNew Animation(※ちゃんと名前をつけよう)につなげる
Transitionsを開き画像のように設定する
Conditionsをtrueにする
Entryはそのままでよい
##6.ボタンの設定 第三段階
保留にしていた[VRC_Trigger]のつづき
Actions: SetComponentActive
Receivers: (ボタン自身)
Component: UnityEngine.Animator
Enable: True
#指定の場所へリスポーンさせたいとき
[VRC_Scene Reset Position]は特に指定しないと元あった位置へリスポーンする。
Positionにオブジェクトを設定するとそこへリスポーンさせることができる。これはPickupオブジェクトなど移動するものも指定できる。
今回のワールドは1つだけ違う場所に初期配置されているものを、ほかのオブジェクトとおなじ列に並ばせるため、Mesh Rendererをオフにしたダミーオブジェクトを用意した。
#参考