バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はVRChat Udonをいじってみたからそれについての記事です。
Event系の命令を試行錯誤していじってみました。
前回の記事はこちら。

参考にした先輩のページ
とても参考になりました。
ありがとうございます(*^-^*)
OnplayerTriggerEnter 床に乗ると非表示にする
SetActiveでオンオフしたら簡単にできた。
青い床に乗ると消える。
InputJump ジャンプボタンを押すと非表示にする
Jumpボタンはデフォルトだとスペースキーになってます。
これでスペースキーを押したら消えた!
…しかし一方通行なのでこれだと非表示から表示に切り替えることができない…。
Get activeselfを噛ませてBranchで分岐させたら、スペースキーを押している時だけ消えた
消すオブジェクトのアクティブ状態をGetactiveSelfで取得して、Branchで分岐させてみたらスペースを押している時だけ消えるようになった。
一応キー入力は検知しているわけだし、これはこれで使い道がありそうかな?
インスタンスを繋いでなかっただけだった(~_~;)これ忘れがちなので注意!
VRCChair32からSetActiveのinstanceに繋がないとダメ。↓は接続し忘れていた。
正しくはこう↓
InputUse Useボタンを押すと非表示にする
InputUseに変えただけです。
VRコントローラーの人差し指のトリガーの部分みたいです。
InputGrab Grabボタンを押すと非表示にする
これもEventsをInputGrabに変えただけ。
VRコントローラーの握る部分のボタンです。
InputDrop これは何かとセット?
これなんだろう。
一応組んでみたけどDropボタンってのが分からなかった。不明。
↓のOnPickUpとOnDropはセットで使えるっぽいから、何か他のやつとセットなのかもしれない。
OnPickUp 持ったら表示非表示
一回持ったら非表示、もう一回持ったら表示…のループ。
離したら非表示…とかにしたいけどできるのかな?
ん、これもしかしてOnDropってこれとセットなのかな?
OnDropと組み合わせたらいけた!これはセットで使うと良いっぽい
これで持ったら非表示、離したら表示、って感じにできた。
Interact オブジェクトに触れてトリガー引いたら表示非表示
これでいけた!
キューブをクリックすると表示非表示を切り替えられます。
これはドアの開閉とかのギミックによく使われてるやつかな?
とりあえずこれ覚えとくだけでも基本的なギミックは作れる気がする。
Interactでアニメーションを切り替える
前回の記事でもアニメーション切り替えは書いた。

アニメーションを二つ作って遷移で双方向に繋ぎ、bool変数を作って遷移条件を設定しておく。
これでタッチしたらアニメーション変更できた!
OnPlayerRespawn リスポーンしたら非表示にする
最初は表示されてるけど、穴に落ちてリスポーンしたら消えた!
OnPlayerParticleCollision パーティクルに触れたら非表示
パーティクルはアセットストアで無料配布されてるやつを使います。
Unity Particle Pack|unity asset store
しかしできなかった…。コリジョンの設定が必要な気がする。
こちらの先輩によると、パーティクルシステムにコリジョンの設定をすればいいらしい。
ありがとうございます(*^-^*)

日本語化してあるから一瞬戸惑ったけど多分これでいいっぽい。
これでいけた!
ノードはこんな感じ。
これまではchairにudon behaviorをつけてたけど、今回はparticleにudon behaviorをつけないと動作しなかった。
あと↓でやったらパーティクル自体が消えてしまった。
※setactiveにインスタンスが指定されてなかったからのようです(~_~;)指定しないとselfが指定されるので自壊する
正しくはこう。
これでパーティクルに当たった時にオフだったらオン、オンだったらオフにできた。
インスタンスを指定し忘れるのはついやっちゃうな(~_~;)
忘れないようにしないと。
OnPlayerCollisionEnter コライダーに触れたら非表示
こんな感じにしてみたけど、これは静止してるオブジェクトだと動かないっぽい。
じゃあ思いっきり動かしてみるか…w
んーダメだな…なんでだろう。
Rigidbodyを追加するといいらしい
検索したらこちらの先輩が同じようなことをやっていて参考になった。
ありがとうございます(*^-^*)

とりあえずRigidbodyだけ追加してみたらいけた。
一瞬消えたのがお分かりいただけただろうか。
最初にぶつかった時も消えたけど、録画のFPSが低くて撮り逃したw
……でもアニメーションで動いてるオブジェクトに接触すればいいならOnPlayerTriggerでいいか…。
おわりに
単純なギミックだけならこれだけで結構いけそう。
細かい条件はudon#とかいうやつで書いた方がいいのかな?そっちも見てみるか…。
まぁゲーム作りたいとかじゃなければ基本的な命令の組み合わせでもだいぶいけるかもしれない。
もう少しいじってみます(*^-^*)