【Unity】Unity 2018.3でTimelineの座標系が少し分かりやすくなった
UnityのTimelineは座標系に謎の挙動がありましたが、Unity2018.3でもう少し納得できる感じに修正されました。
Unity 2018.3以前のTimelineの座標系
Timelineの座標ですが、Unity2018.3より前はAnimatoinControllerの有無で挙動が変わるという、非常に面倒くさい仕様でした。
AnimationTrackで操作する場合、AnimationControllerが無い場合は親オブジェクトからの相対座標ですが、有る場合は現在座標を開始地点とした相対距離を移動します。
これがAnimationControllerの有無で変わる為に無駄な混乱が有りました。
例えばゲーム演出としてのカットシーンを使用したい場合、AnimationControllerを外さないと現在地からの相対移動でスタートすることになり座標が狂います。かといって座標をTimeline開始点に合わせて調整するのは余りにも無駄な操作です。
tsubakit1.hateblo.jpそれだけでも意味不明ですが、この挙動はゲーム再生時のみのためゲーム再生とTimeline再生で動作が異なります。
そんな感じで、Timelineは結構面倒な機能になっていました。
変化したTimelineの座標系
Unity 2018.3からAnimationTrackに3つのオプションが追加されました。
- ApplyTransformOffset
- ApplySceneOffset
- Auto
この設定により座標の設定が若干異なることになります。
ApplyTransformOffsetはカットシーン向け
ApplyTransformOffsetはキャラクターの現在の座標を無視して、親GameObjectからの相対距離で移動します。
親オブジェクトの座標に従う為、座標は常に期待通りの位置で終わります。逆に、その場でアニメーションさせたい場合には親オブジェクトを用意して実行という無駄な手間が発生します。
開始点を少しずらしたい場合はオフセットで位置や回転を調整して、アニメーションをうまい感じに調整していきます。
ApplySceneOffset
ApplySceneOffsetの場合、Timeline開始時の座標を基準としてアニメーションを開始します。
なお、この状態でアニメーションを編集すると挙動がかなりおかしくなります。基本的にアニメーションを編集する際にはTransformOffsetにするのが良さそうです。
Auto
AnimationControllerの有無で動作が変わります。
Uniy 2018.3以前の動作との互換性用です。
私が本当に欲しかったもの
PlayableDirectorとの相対距離で作ってほしかった私です。
まぁ全オブジェクトをPlayableDirectorの子にして、TransformOffsetで再生すれば良い話ではあるんですが、親子関係は色々な動作に強烈に関わるからできるだけ動かしたくないっていう
何にしても、余計なお世話が消えて大分使いやすくなりました。