赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

Rigitbody UseGravityが動かない問題について

UnityのRigitbody UseGravityが動かなくなりました。

これについての解決策を記載しておきます。

 

関連ワード

以下のキーワードに心当たりがある人に対して本投稿は力になれるかもしれません。

・Animator

・Animation

・ルートモーション

 

また、IsKinematicやUseGravity、FreezePositionのチェック等のRigitbodyにおけるチェックは済ませているものとします。

 

 

結論

1. UseGravityの停止はAnimatorのルートモーションの挙動により行われてしまう。
2. AnimationのImportSettingsでBakeを行うことでルートモーションから解放される。

 

Animator、Animationは非物理挙動のため、Rigitbodyの物理挙動と相性が良くないです。しかし、ルートモーションの設定を行っていなければUseGravityが機能するため今回の問題につながりました。

 

 

 

戸惑う動作一覧

・ヒエラルキ上のAnimator.ApplyRootMotionのチェックを外す
ルートモーションしなくなりますがgravityは効く。


・ImportSettings > Rig > RootnodeをNoneにする
ルートモーションしなくなりますがgravityは効く。

 

・RootMotionNodeを<RootTransform>に設定します。
これを行うことでルートモーションから外れる旨の記述を見つけました。
今回はこれと並行してBakeを行ってしまったので、コイツも必要かもしれません。
単独だと1と同様にルートモーションしなくなるだけかもしれません。

 

その他アホな私が行った動作

・ImportSettings > Animation のSouceTakeを入れ替えてしまう

複数のモーションを切り替えるときに、普通はClipsで入れ替えますがつい触ってしまったみたい。

f:id:RedRabbitNet:20190523075134p:plain

 

・めっちゃApplyする

チェック外して付け直してもボタンが浮き出たままだったからやってしまいました。必要ありません。

 

 

以上です。何かお力になれれば幸いです。