【Unity】UnityChanアニメーションジャンプでコライダーがついてこない

Unityでキャラクターがジャンプアニメーション中にコライダーが地面に残ったままになる問題を解決するために、いくつかのポイントを確認してみましょう

動画による確認

想定外の動作

期待する動作

対応

1. アニメーションとコライダーの連動

アニメーションが動作してもコライダーが正しく動かない場合、アニメーションによって直接コライダーが動かされていない可能性があります。コライダーをキャラクターの移動に連動させるための方法を確認しましょう。

2. ルートモーションの使用

キャラクターのアニメーションで「ルートモーション」を使用しているか確認します。ルートモーションを使用することで、アニメーションの動きをキャラクターの移動に反映することができます。

  • ルートモーションの有効化:
    1. Unityエディターでアニメーションを選択します。
    2. Inspectorウィンドウで「Root Motion」を有効にします。
    3. Animatorコンポーネントで「Apply Root Motion」にチェックを入れます。

ルートモーション (Root Motion) とは、アニメーションの中に含まれるキャラクターの移動情報を、ゲームオブジェクトの実際の位置に適用する機能のことです。具体的には、アニメーションの動きに従ってキャラクターの位置を更新することで、よりリアルな動きを実現します。

ルートモーションの概要

  1. アニメーションの移動情報:
    • アニメーションデータには、キャラクターがどのように移動するか(位置の変化や回転など)の情報が含まれています。通常、この移動情報はアニメーションのルート(基底部分)に対して記録されます。
  2. 適用方法:
    • ルートモーションを使用することで、アニメーションの移動情報をキャラクターのゲームオブジェクトに直接適用します。これにより、アニメーションに従ってキャラクターがシーン内で実際に移動します。
  3. 利点:
    • 手動で位置を調整する必要がなく、アニメーション通りの自然な動きをキャラクターに反映できる。
    • 複雑な移動や回転が含まれるアニメーションでも正確にキャラクターを動かすことができる。

Unityでのルートモーションの設定

  1. アニメーションの設定:
    • アニメーションのインスペクタで、「Root Transform Position (Y)」の「Bake Into Pose」をオフにします。これにより、Y軸方向のルートモーションがキャラクターに適用されます。
  2. Animatorコンポーネントの設定:
    • キャラクターのゲームオブジェクトにアタッチされたAnimatorコンポーネントの「Apply Root Motion」にチェックを入れます。これにより、アニメーターがルートモーションを適用するようになります。

例えば、キャラクターがジャンプするアニメーションを持っているとします。このアニメーションには、キャラクターが地面から離れて上昇し、再び降りてくる動きが含まれています。ルートモーションを適用すると、この上昇と降下の動きがゲームオブジェクトの実際の位置に反映されます。

設定手順の再確認

  1. アニメーション設定での「Bake Into Pose」をオフ:
    • アニメーションを選択し、「Root Transform Position (Y)」の「Bake Into Pose」のチェックを外す。
  2. Animatorコンポーネントで「Apply Root Motion」にチェックを入れる:
    • キャラクターのゲームオブジェクトを選択し、Animatorコンポーネントの「Apply Root Motion」にチェックを入れる。

注意点

  • ルートモーションが有効になっている場合、アニメーションによってキャラクターの位置が完全に制御されるため、スクリプトで位置を制御する場合には注意が必要です。
  • アニメーションのルートが適切に設定されていない場合、予期しない動作が発生することがあります。

ルートモーションを正しく適用することで、キャラクターの動きがより自然でリアルになるため、アニメーションの品質を向上させることができます。

AssetStoreのUnityChanアニメーションの場合

アセット中のアニメーションのインポートが同梱されています
この同梱されているアニメーションの場合の対応について、見ていきましょう

Inspectorウィンドウで「Root Motion」を有効にします。

インポートされたアニメーションのため、アニメーションを選択した時のInspectorのRoot transform Position(Y)のbake Into Pose をオフにすることで対応します

このオプションをオフにすると、アニメーションのルートモーションがキャラクターの移動に影響を与えるようになります

Animatorコンポーネントで「Apply Root Motion」にチェックを入れます

Animatorコンポーネントで「Apply Root Motion」にチェックを入れることにより、アニメーションのルートモーションがキャラクターの移動に反映されるようになります。これにより、アニメーションの位置データがキャラクターの位置に適用され、ジャンプアニメーション中にコライダーが正しく動くようになります。

サンプルシーンの構成

コライダーのアタッチ

UnityChanのデモPrefabのアニメーターの差し替え

テストのためのアニメーションのループ

Animation,Unity

Posted by hidepon