ご訪問いただきありがとうございます。「おにいざん」と申します。
このブログでは、VRChatを中心にVRに関する体験や学びをまとめています。
詳しくは右上のプロフィールをご覧ください。

ジャンプ時、挙動がおかしくなる時の対処法

カテゴリ

タグ

自作のアバターを作成している時に気づきました。
OVRを使って膝を曲げた状態等でジャンプしたとき、挙動がガクッとなりませんか?


↑GIFですが、こんな感じで首? ガクッてなる感じ……


どうやらジャンプした時、落下アニメーションが出てしまうことが原因らしいです。

では、その落下アニメーションを開いてみます。


アバターによって名前が違いますが、Playable LayersのBaseです。無い場合は作成してください。
Baseのcontrollerをクリックするとstateが見れます。


jumpAndFall(赤丸のところ)が落下のstateになります。
ここをミュートにすると解決ですが、そうすると長時間の落下アニメーションも消えてしまいます。
私的には、ガクッとするのを改善したいだけなのでそれはしません。

とりあえず、jumpAndFallの左にある→が3つ重なっているTransitionをクリックしてみます。


それぞれの意味としては
SmallHop:小さなジャンプ(短い滞空時間で着地する軽いジャンプ)
ShortFall:短い落下(低い段差から落ちる、または短い滞空時間の落下)
LongFall:長い落下(高いところから落ちる、滞空時間が長い落下)


まずSmallHopとLongFallを消します。
ジャンプのアニメーションが消えてしまいますが、残しておくとバグってしまうので消します。

そして、残ったShortFallをクリックしてください。


注目する点はVelocityYです。
これは簡単に言えば落下する速度、どれだけ勢いよく落ちているかを判定しています。
現段階で言えば-4、-2になっており、この数値で挙動がおかしくなっています。
つまり、この数値を変更すれば解決です。

どのくらいの数値に変更すればいいのか? アバターによって違うかもしれませんが、私的には-6、-4がちょうど良く感じました。


変更したのでアバターをアップロードして確認してみます。


これで直っていると思います。


落下のアニメーション自体を消したわけではないので、このように長時間落下アニメーションは残っています。感覚的にはジャンプのアニメーションだけ消えた感じです。



まとめ
この方法はあくまで私なりの処理です。
本当はもっと良いやり方があると思います。

ShortFallを弄らないといけないのは分かりますが、SmallHopとLongFallを消さないと正常に動作しない理由はいまだに分かってないです。試行錯誤している時に偶然できたので……

ちなみに今回の挙動バグは可愛いポーズツールといったものを入れているとなりません。

自分はまだ未熟者です。
もっと良い方法が思い浮かべば、また記事にしたいと思います!



ここまでお読みいただき、ありがとうございました。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA