※このページではアフィリエイト広告を紹介しています

VRChat UdonのEventsをいじって試行錯誤してみた備忘録~InteractやOnPickupなど~

VR

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事はVRChat Udonをいじってみたからそれについての記事です。

Event系の命令を試行錯誤していじってみました。

 

前回の記事はこちら。

VRChat Udonワールドの作り方を公式動画で学ぶ③ ~Haptic Eventで振動追加、ドアをアニメーションで動かす~
VRChat Udonワールドの作り方を公式動画で学びました。Haptic Eventで振動追加、ドアをアニメーションで動かしました。

VRコントローラーのトリガー押して発動するギミック作りたいだけなら↓の記事のやり方でだいたいできるかも。

VRChat UdonのInteractでドア開閉を作ったメモ。アニメーション切り替えとかコライダーの問題とか
VRChat UdonのInteractでドア開閉を作ったメモです。
■PR■

現在200個以上の新規unityアセットが最大50%オフで買える New Releaseセールをやっているみたいです。

unityアセット New Release割引 最大50%OFF

欲しいアセットはこの機会に買っておくと良いかも。

 
 

 

 

参考にした先輩のページ

とても参考になりました。

ありがとうございます(*^-^*)

U# 入門 おまけ - ハツェの真時代傾向璋
こんばんは。ハツェです。今回も、Udonをスクリプトで制作するための記事を書いていきます。前回はuGUIでUdonを扱う方法について紹介しました。今回はもう前提知識として伝えることは伝えたので、おまけ回です。動作環境は、Unity:2019.4.29f1、VRCSDK:2021.08.11.15.16、U#:v0.20...
Events
AnexperimentalcompilerforcompilingC#toUdonassembly-MerlinVR/UdonSharp

 

VRChat UdonのEventノードの公式ページはこちら。

Event Nodes | VRChat Creation
ThisisalistofUdonNodesthatareconsidered"Events".

OnplayerTriggerEnter 床に乗ると非表示にする

青い検知床にUdon Behaviorを追加して、VRCChair3をpublic valiablesとして読み込んでおく。

オブジェクトをUdon GraphにD&Dすると変数として読み込めます。

基本的に「床に乗る」とか「タッチする」とかのトリガーになるオブジェクトにUdon Behaviorを追加しておけばいいかな。

あとは変数としてオブジェクトを読み込んでおけば、トリガーオンオフで非表示したりできる。

 

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 持ったら表示非表示

今度はキューブを追加して、Udon Behaviorを追加する。

VRCChair3-2を表示非表示する。

 

一回持ったら非表示、もう一回持ったら表示…のループ。

 

離したら非表示…とかにしたいけどできるのかな?

ん、これもしかしてOnDropってこれとセットなのかな?

OnDropと組み合わせたらいけた!これはセットで使うと良いっぽい

これで持ったら非表示、離したら表示、って感じにできた。

 

Interact オブジェクトに触れてトリガー引いたら表示非表示

これでいけた!

キューブをクリックすると表示非表示を切り替えられます。

これはドアの開閉とかのギミックによく使われてるやつかな?

とりあえずこれ覚えとくだけでも基本的なギミックは作れる気がする。

Interactでアニメーションを切り替える

前回の記事でもアニメーション切り替えは書いた。

VRChat Udonワールドの作り方を公式動画で学ぶ③ ~Haptic Eventで振動追加、ドアをアニメーションで動かす~
VRChat Udonワールドの作り方を公式動画で学びました。Haptic Eventで振動追加、ドアをアニメーションで動かしました。

アニメーションを二つ作って遷移で双方向に繋ぎ、bool変数を作って遷移条件を設定しておく。

 

これでタッチしたらアニメーション変更できた!

OnPlayerRespawn リスポーンしたら非表示にする

 

 

最初は表示されてるけど、穴に落ちてリスポーンしたら消えた!

 

OnPlayerParticleCollision パーティクルに触れたら非表示

パーティクルはアセットストアで無料配布されてるやつを使います。

Unity Particle Pack|unity asset store

しかしできなかった…。コリジョンの設定が必要な気がする。

 

こちらの先輩によると、パーティクルシステムにコリジョンの設定をすればいいらしい。

ありがとうございます(*^-^*)

パーティクルの接触判定を作成する
プレイヤーがパーティクルに接触するとプレイヤー名を表示するサンプルの解説Udonスクリプト作成サンプルのS…

日本語化してあるから一瞬戸惑ったけど多分これでいいっぽい。

 

これでいけた!

ノードはこんな感じ。

 

これまではchairにudon behaviorをつけてたけど、今回はparticleにudon behaviorをつけないと動作しなかった。

あと↓でやったらパーティクル自体が消えてしまった。

※setactiveにインスタンスが指定されてなかったからのようです(~_~;)指定しないとselfが指定されるので自壊する

 

正しくはこう。

これでパーティクルに当たった時にオフだったらオン、オンだったらオフにできた。

インスタンスを指定し忘れるのはついやっちゃうな(~_~;)

忘れないようにしないと。

OnPlayerCollisionEnter コライダーに触れたら非表示

新たにキューブを追加して、Udon Behaviorを追加する。

 

こんな感じにしてみたけど、OnPlayerCollisionEnterは静止してるオブジェクトだと動かないらしいです。

じゃあ思いっきり動かしてみるか…w

んーダメだな…なんでだろう。

Rigidbodyを追加するといいらしい

検索したらこちらの先輩が同じようなことをやっていて参考になった。

ありがとうございます(*^-^*)

壁や床の接触判定を作成する
プレイヤーが青い領域に侵入すると正面からCubeが飛んできて、プレイヤーに接触するとCubeが停止してコントロ…

 

とりあえずRigidbodyだけ追加してみたらいけた。

一瞬消えたのがお分かりいただけただろうか。

最初にぶつかった時も消えたけど、録画のFPSが低くて撮り逃したw

……でもアニメーションで動いてるオブジェクトに接触すればいいならOnPlayerTriggerでいいか…。

おわりに

単純なギミックだけならこれだけで結構いけそう。

細かい条件はudon#とかいうやつで書いた方がいいのかな?そっちも見てみるか…。

まぁゲーム作りたいとかじゃなければ基本的な命令の組み合わせでもだいぶいけるかもしれない。

 

もう少しいじってみます(*^-^*)

タイトルとURLをコピーしました