GP09 Ex
アニメーションがズレる原因いろいろ:
移動開始前の待機モーションのアニメーション w_anim と移動モーションのアニメーション p_anim で Transition の X Y Z がズレている場合に発生。
または、
p_anim の開始前と終了後の X Y Z は一致していても w_animの X Y Z とのずれがある場合は Animator でステートの遷移が起きた際にそのずれの分だけオブジェクトが移動してしまう。
ポイント1:
ループ再生するAnimation Clipの開始時点のTransformと終了時点のTransformが一致していること。
ポイント2:
Animator の Apply Root Motion がオフの場合:
Animator のステート変更(Transition)の際に移動元ステートと移動先ステートでTransitionがずれている場合は、一致させておく。
下の画像では w_anim と p_anim の Transition がずれているので一致されればよい。
ただし、ここでは pistion と pistion(1) を同一のanimation clip である p_anim で往復運動させているので位置を修正すると piston の運動にも影響が出る。
p_animを複製して p_anim(1)を作成して piston(1)用のanimation clip として animator に組み込むことになる。
Animator の Apply Root Motion がオンの場合:
ステート間でアニメーションの開始位置がずれていても「Apply Root Motion」がオンになっていれば各ステートのアニメーションで開始点と終了点が一致していればTransitionを繰り返しても位置のズレは発生しない。
ポイント3:
Animator の Exit ステートへのTransitionの設定が変更前のステートのAnimation clipの時間とずれている。
アニメーションが途中で中断されないようにアニメーションを調整するか、TransitionのExit Timeを変更前のAnimarion clipの時間に合わせる。
Exitステートに遷移させずに w_anim ステートへのTransitionを作成してアニメーションのブレンドが起こらないようにしてもよい。
アニメーションのブレンドについて
Animatorでアニメーションを遷移するとアニメーション間のブレンドが設定される。
歩行モーションと走行モーションや左右へのターンなどモーションを切り替える際に、各アニメーションクリップの終了時点と開始時点の姿勢の差をブレンドしてスムースにアニメーションをつなげるための処理が自動的に設定される。
スライディングアニメーション と スタンディングアニメーション をブレンドしたらこんな感じになるかもしれない。
ポイント4:
ステート変更時のTransitionの際のAnimation Clipのブレンドを調整する。
ステート変更の際に、意図しないアニメショーンが発生する場合はAnimation Clip間のブレンドを確認する。
ブレンドしない状態にするには以下のように調整する。
Has Exit Time を OFFにして遷移の前後でAnimation Clipの重なりが起きないようにずらす。