バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はVRChat UdonのInteractでライトをオンオフしてみたのでそれについての記事です。
VRChat Udonの記事は前にも書いてるからこっちも参考になるかも。







やってみた手順
やってみた手順を書いておきます。
スイッチになるオブジェクト(キューブ)を配置する
とりあえずキューブを追加してみます。
これを壁に配置してスイッチっぽくしておく。
とりあえず動作確認してから見た目に凝るといいかもしれない。
コライダーは使うのでそのままにしておく
Interactのタッチ判定にコライダーを使うっぽいので、コライダーはそのままにしておく。
キューブを追加するとデフォルトで設定されてるはずなので消さないように。
キューブにUdon Behaviorを追加
キューブのインスペクターで「コンポーネントを追加」をクリック、検索バーに「Udon」と入れて出てきたUdon Behaviorを追加する。
追加したUdon BehaviorのProgram Sourceのところの、New Programをクリックしてプログラムを追加する。
追加できたらOpen Udon Graphをクリック。
これでノード画面が開くのでノードを組んでいきます。
ノードを組む
最終的にこんな感じになればOK。
PointLight3のインスペクターの状態をGet activeSelfで取得し、Branchでtrueとfalseの場合の処理に振り分けてます。
trueならfalseに、falseならtrueにすることでライトのオンオフを切り替えます。
ノードの組み方
詳しいやり方は以前書いたけど、









私もちょくちょく忘れるから一応書いておきます。
まぁ一度組めばオブジェクトへの参照以外はコピペで使い回せるけどね。
制御したいオブジェクトやコンポーネントをD&Dしてノードに持ってくる。
ここではヒエラルキーからオブジェクトごとD&Dしてますが、トランスフォームやアニメーターなどのコンポーネントを持ってきて制御することもできる。
ちゃんと参照されてるかチェック。されてなければUdon BehaviorのPublic valiablesのところにもD&Dして確認する。
ちゃんと設定されてればクリックした時に黄色い枠で強調される。
この参照が間違ってると、ノードが間違ってなくても動かないので注意。
何もないところでスペースキーを押すとイベントが検索できるので、Interactを出す。
オブジェクトからノードを伸ばしていくと繋ぎ忘れがなくて良いかもしれない。
Get activeSelfから伸ばしてもSetActiveを出せるんだけど、最初のオブジェクトからSetActiveにも繋がないと動かないので最初に伸ばしてしまった方がいいかも。
あとはBranchを繋いでいってSetActiveのチェックを入れればOK。
とりあえずこれで最低限動くはず。
動いた!
Local Testingの Build & Test で動かしてみます。
ちゃんと動いた!
部屋ごとに照明をまとめておくと、親オブジェクトを消してまとめて消せる
部屋に照明が複数ある場合、親オブジェクトを作って部屋ごとに照明をまとめておくと、親オブジェクトを消せばまとめてオンオフできます。
空のオブジェクトを作成して、
RoomLightGroupみたいな適当な名前を付けて、子にライトを配置すればOK。
これでRoomLightGroupオブジェクトをオフにすればライトが二つとも消える。
ノードはオブジェクトのところだけ変えればOK。
これで二つ同時に消せた!
このInteractだけでも簡単なギミックはだいたい作れそうですね。
おわりに
案外簡単にできて良かった。
次はスイッチを押したらスイッチの見た目を変えたり「ピッ」みたいな音を出せるようにしたいな…。
もしかしたら案外簡単にできるかもしれない。
まぁもう少しいじってみます(*^-^*)
追記:
スイッチを押すと音が鳴るようにしました。


