【Unity】RootMotionを持たないアニメーションをTimelineで動かす
今回はTimelineで、RootMotionを持たないキャラクターを動かしてみました。
Timelineと移動
Unity 2017より、やっとこさTimeline(カットシーンエディタ)が追加されました。
この機能は、シーケンスベースでキャラクターにAnimationを流し込める*1という機能です。
またアニメーション間でブレンドも行ってくれるので、割と良い感じにキャラクターのアニメーションを表現出来ます。
とまぁ、ココまでは良いのですが、実はこの機能Tweenがありません。まぁ作ること自体はそれ程難しくないのですが、ソレはソレ、これはコレ。
Root Motoinで動く前提?
で、キャラクターの移動をどのように制御するかと言えば
というふざけた内容。
ではRootMotoinが無いアニメーションは? Clip Root Motoinをいい感じに動かしてキャラクターの位置を調整? ハハッ、5000兆歩譲ってもそれはないでしょう。
Animationで動かす
という事で、Animationで動かします。*2
- AnimationTrackを右クリックして、Add Override Trackを追加します。
- 赤丸を押してレコードモードに切替、後はキャラクターを動かすだけです。
ちなみに一番下のOverride Animationが移動を制御してるっぽいです。(この振る舞いはバージョンアップで変わる可能性があります)
なお、Override Animation Trackを「作る」タイミングでHumanoidのRigがOptimized Game Objectしてなかった場合、正常に動作しないという挙動を確認しました。
「Keyframing for humanoid rig is not supported!」とエラーが出て、移動した分を巻き戻されます。
RigにGenericを使用するか、Override Animation Trackを「作る」タイミングでOptimized Game Objectを設定しとけば回避出来ます(終わったらもとに戻してもOKっぽい)
カーブエディタを使いたい
Timelineでカーブを追加出来ますが、本丸のカーブエディタと比較して使い勝手は悪いです。また、繰り返し等をする際に不便です。…なのでカーブエディタを使用します。
Convert to Clip TrackでカーブはAnimationClipに変換されます。
その状態で生成されたクリップをダブルクリックすると、何時ものカーブエディタが使えます。Timelineとも同期しているので、割と楽に編集出来ます。
なお、AnimationClipはPlayableAssetの子として生成されるので、フォルダ周りもスッキリです。名前はAnimation PlayableのAnimation Clip Nameで指定します。
Project Saveしないと反映されない点に注意です。
関連
#Unity のTimelineで、RootMotoinの無いアニメーションでカットシーンを作る的な pic.twitter.com/Ijeq6WUBGl
— 椿 (@tsubaki_t1) 2017年6月15日