こんにちは。いつもお世話になっております。
UnityでSpineアニメを再生する際、一部のモーションにrootmotionを適用しています。
しかしいくつかのユースケースで期待した結果にならないため、rootmotionの仕様と使い方を教えて下さい。例えば以下のような一歩前に踏み込んで攻撃するモーションがあります
※Unity上の設定
彼は攻撃する度に前に進み問題なく動いています
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
---■ SkeletonDataAssetをゲーム中読込し直した場合、機能しなくなる
ゲーム中、場面を切り替えるとシーン上のオブジェクトがSkeletonDataAssetを読み込み直し、別の、あるいは同種のキャラクターに再設定されスポーンします。
するとこのようにrootmotionが効かなくなりました。
上記のメソッド中のInitializeをコメントアウトしたらrootmotionの問題は発生しなくなりました。SkeletonDataAsset読み込み後Initializeすると既存のrootmotionコンポーネントが機能しなくなるのでしょうか?
SkeletonDataAssetの再設定しつつ、rootmotionを再度有効にするにはどうすべきですか?
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
---■ 親ボーンのスケールの影響を受けない
コンストレイントをスキンに組み込み、体型の異なるキャラを実装しています。
rootmotionに指定したボーンは親のスケール縮小によって移動距離が調整されます
基準となっている男性は問題なく前進しながら攻撃します。
しかしスケールが小さくなったゴブリンはモーションが完了する度に前に瞬間移動してしまいます。
親ボーンのスケール縮小は考慮されないのでしょうか?
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
---■ Rigidbody2Dを適用すると動かなくなってしまう
rootmotion時の地形コライダーへめり込むことがあるので、Rigidbody2Dを適用してみました。
しかし、移動ができなくなってしまいました。キャラクターの左右移動はRigidbody2Dのvelocityを使用しています。
rootmotionを期待通りに機能させるにはどのようにすればよいでしょうか?
rootmotionの正しい仕様を知りたいです。
ここまで読んでくださってありがとうございます。