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

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

Unity

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

 

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

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

VRChat Udonワールドの作り方を公式動画で学ぶ③ ~Haptic Eventで振動追加、ドアをアニメーションで動かす~
VRChat Udonワールドの作り方を公式動画で学びました。Haptic Eventで振動追加、ドアをアニメーションで動かしました。
VRChat UdonのEventsをいじって試行錯誤してみた備忘録~InteractやOnPickupなど~
VRChat UdonのEventsをいじって試行錯誤してみた備忘録です。
■PR■

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

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

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

 
 

 

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

おわりに

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

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

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

 

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

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