見出し画像

【VRC】アバター ジャンプ中だけ表情変更

「アバターのジャンプ中、表情変更する」は

①Groundedを取る
②LocomotionLayerの姿勢[ステート]で判断する

の2種類のやり方が考えられるっぽい
①のほうが簡単だけど、②のほうがきめ細かな表現になる

でもやっぱりどっちも複合させたほうがよくなったのでおすすめ
①は簡単そうなので②の方法を説明する(3点限定)

LocomotionLayerだ


JumpAndFallのサブステートだ

アバターが普通ジャンプすると赤い矢印のルートを通る。

SmallHop
Short Fall
QuickLand

RestoreTrackingは考えなくて差し支えない(姿勢ではないため)。


パラメーターだ

whl_SmallHop
whl_ShortFall
whl_QuickLand

を追加する。意味は、whl_SmallHopがtrueのときSmallHopの状態にある(ステートにいる)程度のもの(好きな名前でかまわない)。それを実現するためLocomotionLayerに変数を登録しよう


whl_SmallHopは、SmallHopしてるときtrueにしなきゃいけない


SmallHop

つまりこう
Avatar Parameter Driverは便利
whl_SmallHop等は、FXレイヤーの条件分岐(=表情変更)に使う。なのでFXにも登録しなきゃいけない。とりあえず今はLocomotionを終わらせよう


ShortFallでは
whl_ShortFallはtrueで一方、whl_SmallHopをfalseにする


QuickLand

QuickLandはwhl_QuickLandがtrue
whl_ShortFallをfalseにする

ここをうまく通らないときもあるのでwhl_ShortFallなどがtrueのままのパターンが心配だ


だからこう。一階層上のデフォルトステートにフラグをすべてリセットする処理を置いておく。ぜったいとおるのでこれで安心

つぎにFXレイヤーのParameterにも同じ変数を登録してから

表情変更レイヤーはこんな感じ?


ジャンプ表情に入る条件

ジャンプは基本的に上書きするのでAnyStateからでOK
Can Transition to Selfはチェックを外そう

ShortFallは無視して、QuickLandに。ちなみにQuickLandは着地姿勢(硬直中)なのでGroundedはtrueになってる。Groundedだけで判断するとここで表情変更させることはできない。わざわざQuickLandをもったことが役に立つ。

あとはまばたきの制御等をして完成。

ちなみに気をつけなければいけないのがSmallHopからExitへの分岐をつけること

↑これ↓

安全

通常のジャンプとは違う特殊なルートがLocomotionで発生したときの処理だ

追記:VRに入ってジャンプ連打してたらモーションと接地にラグがあることに気づいた。だからモーションだけでとってもずれることがある
Groundedも使おう

入り口にこの条件を追加して

直接Exitする条件を少し変える(追加する)
これでうまくいくはず(あとで動画撮る)

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