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

Unity
※記事内に広告が含まれています。

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

この記事はVRChat UdonのInteractでドア開閉を作ってみたのでそれについての記事です。

VRChat Udonについては以前書いたのでこちらの記事などを参照。

動作確認した最新のバージョンはunity2022.3.22、VRChat SDK3.8.2です。

●PRスペース●
■PR■

現在、TPSシステム系アセットが50%オフで買える Unityパブリッシャーセール をやってるみたいです(2025/09/12 23:59まで)。

Unity パブリッシャーセール 50%オフ

クーポンコード FANTACODESTUDIOS を使うと、↓のロープスイングシステムがタダで貰えます(決済時にクーポンコード入力適用で0円に)。

unity ロープスイングシステム

無料アセットだけでも貰っておくと良いかも。

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

VRChat UdonのInteractでドア開閉を作った手順

忘れても後から見返しやすいようにできるだけ詳しく書いておきたいなぁと(願望)。

手順1:アニメーションファイルを作っておく

開けた状態のopenと、

閉じた状態のcloseを作っておく。

キーは0フレームだけに打ってあります。

※後述するけどシェイプキーじゃなくてトランスフォームで動かしてアニメーション作ったほうがいいかもしれません。

手順2:アニメーション遷移を作っておく

ドアにこんな感じのアニメーター設定を作ります。

開閉二種類だけ制御できればいいので、boolでパラメーターを作っておく。

IsOpenっていう名前にしました。

conditionsでtrueとfalseを切り替えるようにしておく。

終了時間とか遷移間隔とかは実際に動かしながら調整する感じで。

実行ボタンを押して、パラメーターオンオフしてテストしてみる

実行ボタンを押して、シーンビューを表示しながらアニメーター画面を開いてテストします。

うん、ちゃんと動いてるっぽい。

手順3:ドアにUdon Behaviorを追加してノードを描く

こんな感じでドアにUdon Behaviorを設定すればOK。

Udon BehaviorはVRChatワールドのSDK入れてれば、コンポーネントを追加のところで udon って検索すれば出てきます。

new programを選んでノードを開けばOK。

ノードをつなぐ

ドアのアニメーターをudonで制御したいので、ドアのアニメーターをD&DしてUdonグラフに持ってくる。

ノードはこんな感じ。

ドアのアニメーターで定義したboolのIsOpenパラーメーターをBranchで分岐させて、TrueだったらFalseに、FalseだったらTrueにSetBoolする。

SetBoolのvalueにチェック入れればtrueに書き換え、valueにチェック入れなければfalseに書き換え です。

コライダーがないとinteractでもタッチできないっぽい?

これでいけるかと思ったらタッチできなかったけど、ボックスコライダーを追加したらいけた。

interactはコライダーで当たり判定を付けないとダメなのかも?

これで動いた!

おおいけた!

あの青い「ここタッチできるっすよ」みたいヤツも表示されてるw

とりあえずアニメーションで動かす系のギミックはこれだけで大体いけるかな。

ちなみに青いやつに表示されるテキストはここで変えられます。

動いたけどちょっと気に入らない点

動かすだけならこれでいいけど、ちょっと気になった点があります。

シェイプキーで開閉アニメーションを作ったからか?コライダーが動かない

ドアは開いても、緑色のコライダーは置いてけぼり(´・ω・`)

多分シェイプキーで動かしているからな気がする。

シェイプキーは頂点を移動させてるだけだから見た目を動かすことはできるけど、コライダーはついてこないんじゃないかな。

すり抜けてしまう

これでは防犯性ゼロΣ(゚Д゚)

これなんだろう、コライダーをinteract用にすると壁としての機能がなくなってしまうとか?

いやまさかそんなことはないか…?(-_-;)

【解決】シェイプキーじゃなくてトランスフォームで動かせばいけた

トランスフォーム動かしてアニメーションを作ったらちゃんとコライダーも動いた。

すり抜けてしまう問題も解決しました。

vrchat interact

ボーンのあるオブジェクトの場合、コライダーを仕込むオブジェクトに注意

↓の記事で書いたけど、もしHumanoidとかボーンのあるオブジェクトにコライダーを仕込む場合は、RootやHeadなどボーンのあるオブジェクトに仕込まないと追従しない問題が起きます。

まぁ扉なら普通ボーンなんて仕込んでないと思うので、コライダーを仕込んだメッシュをトランスフォームで動かすだけで行けますけど。

動いてなくてもシェイプキーのアニメーション中はコライダーがすり抜けてしまうのかな?

最初にやったやつは、もしかして開けるシェイプキーの値0でキーを打ってcloseを作ったからすり抜けたのかな?

コライダーを設定してもすりぬけてしまった。

↓これね。シェイプキー0だから動いてはいないんだけども。

これだけで判断するわけにもいかないけど、シェイプキーのキーが打ってあるアニメーション中は、コライダーがすり抜けてしまうのかな?

スキンメッシュレンダラーのほうの問題の可能性もあるけど。

或いはUdonやunityはちょいちょいバグって再起動すると直ったりするから、単に一時的に不具合が出てただけかもしれない。

まぁこういうことがあるということに気付けたので、勉強になりました。

あと細かいけどアニメーションがちょっとぎこちないのが気になる

多分原点の設定の問題かなぁ。

原点をドアの回転軸あたりに設定すればいけるかも。

遷移スピードを速くすれば気にならないとは思うけど、なんか動く途中で壁にめりこんでますね(-_-;)

【解決】blenderでドアの原点位置を調整する

blenderで原点位置をドアの端っこあたりにしたら、回転だけで開けるアニメーションが作れたので良い感じになった。

原点を中心に移動や回転のギズモが出るので、ここを中心に回転させられます。

これで回転だけでアニメーションが作れたのでいい感じに開いた!

ただコライダーがここを中心に設定されてたので、位置を調整する必要はあった。

デメリットとしてはそのくらいかな。

おわりに

案外簡単に動かせて良かった。

この程度のギミックなら大して容量食わないから色々仕込んどくと面白そう。

とりあえずこれまで設置した家具類に何か仕込んでみるか…。

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

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