テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】RootMotionを持たないアニメーションをTimelineで動かす

f:id:tsubaki_t1:20170612230633g:plain

今回はTimelineで、RootMotionを持たないキャラクターを動かしてみました。

Timelineと移動

Unity 2017より、やっとこさTimeline(カットシーンエディタ)が追加されました。
この機能は、シーケンスベースでキャラクターにAnimationを流し込める*1という機能です。
またアニメーション間でブレンドも行ってくれるので、割と良い感じにキャラクターのアニメーションを表現出来ます。

f:id:tsubaki_t1:20170612231426j:plain

とまぁ、ココまでは良いのですが、実はこの機能Tweenがありません。まぁ作ること自体はそれ程難しくないのですが、ソレはソレ、これはコレ。

Root Motoinで動く前提?

で、キャラクターの移動をどのように制御するかと言えば

  • Root Motoinを持ったキャラクターを動かす
  • Clip Root Motoin Offsetを設定し、移動した分キャラクターの中心位置を動かす

というふざけた内容。

f:id:tsubaki_t1:20170612232416j:plain

ではRootMotoinが無いアニメーションは? Clip Root Motoinをいい感じに動かしてキャラクターの位置を調整? ハハッ、5000兆歩譲ってもそれはないでしょう。

Animationで動かす

という事で、Animationで動かします。*2

  1. AnimationTrackを右クリックして、Add Override Trackを追加します。
  2. 赤丸を押してレコードモードに切替、後はキャラクターを動かすだけです。

f:id:tsubaki_t1:20170612232956j:plain

f:id:tsubaki_t1:20170612233255j:plain

ちなみに一番下のOverride Animationが移動を制御してるっぽいです。(この振る舞いはバージョンアップで変わる可能性があります)

f:id:tsubaki_t1:20170612233536g:plain

 

なお、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に変換されます。

f:id:tsubaki_t1:20170612233747j:plain

f:id:tsubaki_t1:20170612233757j:plain

その状態で生成されたクリップをダブルクリックすると、何時ものカーブエディタが使えます。Timelineとも同期しているので、割と楽に編集出来ます。

f:id:tsubaki_t1:20170612233954g:plain

なお、AnimationClipはPlayableAssetの子として生成されるので、フォルダ周りもスッキリです。名前はAnimation PlayableのAnimation Clip Nameで指定します。
Project Saveしないと反映されない点に注意です。

f:id:tsubaki_t1:20170612234218j:plain

関連

 

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

 
 

*1:Animatorに指定のAnimationClipが含まれていない場合でも、アニメーションを再生出来る

*2:ちなみに、この動作は少し古いバージョン(Unity 2017 b6とか)だとまともに動きません。動作があまりにも酷いのでClip Root Motoinで動かすのが正しい動作かと勘違いしたレベルで動きませんでした。