Udon初めの初歩の初歩

ビジュアルプログラミング…いいよね…

ガチのプログラマーに言わせると文字でやるプログラミングの方が絶対楽!!!!って言うんだけど、英語の羅列を見てるとくらくらしてくるてねひむとしては頭の中で思い浮かんだ設計図通りにおいていけば動くビジュアルプログラミングがめちゃくちゃあってるんだよね…

unityでゲーム作ろうって思った時もC#全くわからないまま、BOLTっていうビジュアルスクリプティングアセットでいろいろ作ったし

しかしまぁ、BOLTはその価値は十分にあるとはいえ有料アセットなので、友達に「BOLTやろうぜ!」って言っても誰も乗ってきてくれないし、「ここどうすればいいんだろう…」って悩んでも質問できる人もいなくてつらかった…

そんな中で、某…っていうかVRChat運営が突然「ビジュアルスクリプト言語公開するよ!」っていうからびっくりしちゃった

まだできたばっかりで情報もないし探り探りやってるけど、てねひむが理解したところまで情報出しておくぞ!

だから!みんなの!情報をくれ!

ちなみに、Udon事態はまだまだアルファの段階ということで、めちゃくちゃバグがありますし今後のシステム変更もめちゃくちゃ可能性あります!!!!!!!!!!


公式のページ

https://docs.vrchat.com/docs/getting-started-with-udon

ここらへんを参考にしました

https://www.youtube.com/watch?v=GWv3zloRWY4&t=648s


回転するオブジェクト

とりあえず回転する。めちゃくちゃ短いけどUdon作成の流れを確認するにはいいんじゃないだろうか?

用意するもの

適当なキューブ:リジットボディをアタッチしない、空中に浮かんだ状態のもの

画像1


ミラースイッチ

ボタンを押すとミラーを表示したり消したりするやつ

用意するもの

適当なキューブ:スイッチになる

ミラー:これを出したり消したりする

画像2

こちらのUdonグラフをスイッチになるキューブに設定する

コンパイルするとスイッチのInspecter>Udon BehaviourにPublic Variablesという項目が現れるので、その中にミラーオブジェクトをドラッグアンドドロップで入れる

ロジック内にInteractが使われていると、オブジェクトが勝手にスイッチになる


表示、非表示を切り替える手持ちスイッチ

適当なキューブ:VRC Picupコンポーネントをアタッチして手で持てるようにしたものAutoHoldをONにしておく

表示非表示をするオブジェクト

画像3

InteractをOn Pickupにかえただけ

持ち上げるたびに表示非表示が切り替わる

On PickupをOn Pickup Use Upにかえただけ

スイッチを持ち上げて、Useをした時に機能する

Pickup Use UpはUseボタンを離したとき

Pickup Use DownはUseボタンを押したときにそれぞれ機能する

お好みで選びましょう


ワールド重力制御装置

用意するもの

ピックアップオブジェクト:VRC Picupコンポーネント、AutoHold設定をしたもの

お好みでON-OFFをわかりやすくする表示オブジェクト:ピックアップオブジェクトの子供階層に置いておく

画像4

targetにON-OFF表示オブジェクトを設定しておく

手にもってUseするたびに重力が通常と逆転で切り替わる

通常重力加速度はYマイナス方向に9.8!

ワールドの重力がひっくり返るため落ちてるものも上に飛んで行って面白いぞ!

ほかのユーザーはどうなるのか知らない…ローカルテストしかやってないので…


単体ユーザー重力制御装置

用意するもの

ワールド重力制御装置の時と同じ

画像5

ユーザーに対して何かしらする場合は、StartイベントでVariableにNetworking Get Playerを入れておく

こちらはワールドの重力ではなく、ローカルユーザーの重力だけを変更する

Vrcplayer Api Set Gravity Strengthは、ワールドの重力に対する掛け率。1が通常重力、ゼロで無重力になるはずなのだがゆっくり落ちていく…?マイナスで上に落ちる


ワープ装置

スイッチを押すと指定した場所までプレイヤーがワープする

用意するもの

スイッチオブジェクト

移動先指定Empty

上記の二つにそれぞれUdonグラフを設定する

スイッチオブジェクトに入れるUdonグラフ

画像6

移動先指定EmptyのCustam Eventを呼び出すだけの簡単なグラフ

Inspecter>Udon BehaviourのPublic Variablesに移動先指定Emptyを入れるのだが、ゲームオブジェクト指定ではなくUdonBehaviourを指定する必要があるので、いまはまだ移動先指定Emptyを入れることができない


移動先指定Emptyに入れるUdonグラフ

画像7

さっきのCustam Eventから、こちらのUdonグラフが呼び出される

こちらで指定された座標、角度にプレイヤーがテレポートする

こちらのグラフを作成した後であれば、先ほどのPublic Variablesに移動先指定Emptyを入れることができるようになる


プレイヤー飛行装置

Useを押すたび、オブジェクトのY方向に速度が発生する。

つまり手に持ったオブジェクトを飛びたい方向に向けてUseを連打すれば空を自由に飛べるのだ!!

用意するもの

ピックアップオブジェクト:VRC Picupコンポーネント、AutoHold設定をしたもの

画像8

GetUpでオブジェクトのY軸がどっちに向いてるか獲得してから10を掛けてVelocityに入れてる。てねひむ頑張った!えらい!


とりあえずいまはここらへんまでできるようになりました!!!

ここから先は「なにを作りたいのか」のアイデアのほうが重要になってきそうですね

それではこんかいはこのへんで~ノシ

この記事が気に入ったらサポートをしてみませんか?