sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

【Unity】Timelineをツクールのアニメーションエディタ的に使う

目的

  • RPGツクールでいうアニメーションエディタをUnityで代替するには?
  • プログラミングでバトルエフェクトを作るのは確認しづらい。やりにくい。
    …ので、Unityエディタ上で再生しつつ作りこめる仕様はないか探した
  • すると、Timelineという機能が見つかった

Timelineとは

  • Unityエディタ上でオブジェクトやパーティクルをTimelineに配置して、
    キーフレームを打つことで動画のように演出を作れるという機能
  • リアルタイムに演出確認できるというところがポイント
  • スクリプトを連携させることも可能(らしいがまだ未確認)

基本的な使い方

  1. Projectウィンドウで右クリックしてTimelineアセットを作成
  2. Hierarchyに上記Timelineアセットを置くとTimelineインスタンスが配置される
  3. TimelineインスタンスからTimelineウィンドウを開く
  4. ここにHierarchy上に配置したオブジェクトやパーティクルを並べる
  5. 再生するとエディタ上で実行!

いいところ

  • エディタ上でリアルタイムに演出の確認ができる
  • 後述する方法を使えばどこででも再生できる
  • AnimationTrackを作成してオブジェクトをアタッチすると、
    そのオブジェクトにキーフレームを打ってアニメーションできる
    • アニメーションはAnimatorでデータを持つ

f:id:Ashtarte:20210413230639p:plain

Timelineを使いまわす方法

  • Timelineインスタンスは単体ではプレハブ化できないが、
    Timelineアセットを再びHierarchyに投げれば同じ機能が使える
    • ただしトラックを消すと同じTimelineに直で影響(オーバーライドはない)
  • 単体でプレハブ化はできないが、
    親オブジェクトの子にTimelineを置いた場合、そのままプレハブ化できる
  • Timelineで使うオブジェクトやパーティクルを、
    この親オブジェクトの下に配置してプレハブ化すればリンクが切れない
  • あとはこの親オブジェクトプレハブを良い感じに使いまわせばOK
    • Instantiateして再生終了したらDestroyとか
    • 親プレハブのpositionを変えれば指定した場所でTimelineを実行できる
    • この使い方をする場合、パーティクルなどのPlay on Awakeはオフにしよう

注意点

  • Timelineはシーン上に配置したオブジェクトしか使えない
    • Project上からTimelineにアタッチしても表示されない
    • この点から、親オブジェクトの子にTimelineと素材を配置するのは有効

参考

  • Timelineをスクリプトから再生する方法

  • パーティクルのタイミングをTimelineで制御する
  • Timelineを使ってエフェクトを作る

  • Timelineを使ってオブジェクトを動かす方法