調べ物した結果

現役SEが仕事と直接関係ないことを調べた結果とか感想とか

Triggerセットでワープするスイッチ~UnityぐりぐりしてVマケ~

VRC Triggerを使ってみよう

VRC World作成で、Trigger発生させてみた。

すけあくろうSpawn

なんの変哲もない箱
うっすら緑のとげが生えてるのはParticleで芝作ろうと思った名残
(わりとそれっぽく見えなくもない。Particleなのでウゴウゴしてて、風になびているように見えなくもない。)
f:id:couraeg:20190523234644j:plain

クリックするとオジさんが飛び出すシステム
(シュールすぎて一人で笑ってた)
f:id:couraeg:20190523234705j:plain

やり方はぐぐればすぐ出てくる。セットアップしているCubeのInspectorがこちら
(なお飛び出したオジサンは飛び出したままである。)
f:id:couraeg:20190523235004p:plain

1. Add Component-> VRC Trigger で追加する。EventHandlerとTriggerが追加される(Handlerはとりあえず無視してOK)
2. 適当にぽちぽちしてそれっぽいイベントを探す。(正しくは、リファレンスなりを見て適切なイベントを探す)
今回は
  OnInteract(VRCのクリック操作)に対して、SpawnObjectを選択。SpawnするObjectはVRCSDKから拝借してそのまま。
てな具合にすぐできる。

あばたーじゃんぷ

同じ流れでアバターを任意のオブジェクトにワープさせられる。
ワープ先のcubeにもTriggerを付与して(OnAvaterHit とTeleportPlayerの組み合わせ)で次々ワープさせている。
f:id:couraeg:20190524001002j:plain
1段目のジャンプ
f:id:couraeg:20190523235349j:plain
2段目のジャンプ
f:id:couraeg:20190523235556j:plain
3段目のジャンプ。到着
f:id:couraeg:20190523235600j:plain
うっすらオジサンが見える。
f:id:couraeg:20190523235610j:plain

画像は最終的に調整したWorldで撮影してるけど、
最初は移動が速すぎて、認知できなかった。(クリックした瞬間最終地点に飛ぶ)
ので、各移動先で次のTriggerが実行されるまで
ディレイをかけた(DelayInSeconds)
f:id:couraeg:20190523235839p:plain

移動しただけだと微妙なので、Particleの放出させることにした。
移動先の各地点のOnAvaterHitに、Teleportに追加する形でSetParticlePlaying付与させたかったけど
・Teleport用のOnAvaterに同居させるとこっちにもディレイが効いてしまって意味なし。
・それじゃあともう一つOnAvaterHitをAddComponentしたけど、今度は片方のOnAvaterHitしか反応なし。
なのですごく困った。

これであってるのか?感はいまだにあるけど、
結局、Particleの放出は一番最初のTelport地点のCubeで制御するようにした。
計3回ジャンプしているけど、途中の経由地点(ピンクと黄色のParticleを放出してる場所)
のParticleを「同じタイミング」で射出開始している。
f:id:couraeg:20190524000639p:plain

このままだと、まだ到達していない2個め(黄色いほう)が勝手に放出開始されてしまうので、
2個目のParticleにはParticle自身にStartDelayを設定
f:id:couraeg:20190524000440p:plain

だいぶ無理やり感がでてきてる。いい加減に作っても、それとなく動くからとっつきやすい感はありありと感じる。
好きなように作れてしまううえに、ネット上にはただやり方だけボコボコ書いてあるので、
他の人がつくったWorldとかちゃんと読めるのか非常に不安。