今回のテーマ
- Timeline を使って演出を作る
何ができるのか
Timeline を使うと、カットシーン、ゲーム開始時の演出 、ゲームクリア時の演出などを作ることができる。プログラミングはさほど必要ない。
Timeline は、事前に決めたタイミングで以下のことができる。
- アニメーションを再生する
- この時、ブレンドすることができる
- 音を鳴らす
- Cinemachine の Virtual Camera を切り替える
- ブレンドして切り替えることもできる
- オブジェクトをアクティブ化/非アクティブ化することができる
他にもいろいろな事ができるが、これらを組み合わせてカットシーンを作ることができる。
参考資料
- 現場ですぐに使える! Unity 2019逆引き大全319の極意 - 第33章 Timelineの極意
- Unity デザイナーズ・バイブル - Part3 基本コンポーネント編 03 Timelineによるカットインアニメーションの作成
- Unityのタイムラインの基本的な使い方を総まとめ!最短でTimelineを使いこなす
- テラシュールブログの Timeline カテゴリの記事
- 内容的に高度ですが、こんなことができるということを知って自分の作っているものに取り込めるなら参照するとよいでしょう
- Virtual CameraのTracked Dollyでパスに沿ってカメラを動かす
- Timeline でカメラワークに凝りたい人は必須の内容です
プロジェクトの準備
- 以下のパッケージ及びアセットを使うので、入ってなければインポート・インストールする
- Timeline パッケージ
- ProBuilder パッケージ
- Cinemachine パッケージ
- 教材のパッケージ をプロジェクトにインポートする
Assets/4-1 Timeline/Sample シーンを実行して、オープニングのカットシーンが流れてからゲームが始まることを確認すること。
Timeline とは
Timeline とは、各々のオブジェクトの挙動を記録しておき、それを指定したタイミングで再生できる機能を持つパッケージです。以下のような挙動を記録することができます。
- オブジェクトの Transform の変化(位置、向き、大きさ)
- キャラクターなどのアニメーションの再生
- 音を鳴らす
- オブジェクトを表示したり、消したりする
- カメラを制御する
StartingCutScene シーンを開き、Window メニュー > Sequencing > Timeline を選択して Timeline ウィンドウを表示して、シーン内の StartingCutScenePrefab オブジェクトを選択すると、以下のウィンドウが表示される。
以下の点に注目すること。これらは Animator, Animator Controller などと似ていることに留意すること。
- Timeline ウィンドウには各 トラック の情報が表示されている
- オブジェクトには Playable Director コンポーネント が追加され、Playable に StartingTimeline という Timeline アセット がアサインされている
- Timeline アセットには Timeline ウィンドウに表示されているトラックと シーケンス が記録されている
- Playable Director コンポーネントの Play On Awake がチェックされている
- つまりこれを外しておけば、スクリプトから PlayableDirector.Play() を呼ぶことで再生できる
- Sample シーンでは NinjaGameManager スクリプトコンポーネントから PlayableDirector.Play() を呼んで再生しており、Play On Awake のチェックも外してある
実際に作ってみる
Transform をアニメーションさせる
新しいシーンを作り(一度保存して)、基本の操作を学びます。
- シーン内に空の GameObject を作り、名前を Director に変える
- 名前はなんでもよいが、Timeline の Playable Director であることを示す名前にする
- Director オブジェクトに Playable Director コンポーネントを追加する
- Window メニュー > Sequencing > Timeline を選んで Timeline ウインドウを表示する
- Hierarchy で Director を選んだ状態にして、Timeline ウインドウ内の Create ボタンをクリックする
- Timeline アセットが作られるので、名前を付けて保存する
- アセットの名前はなんでもよい
- 作られた Timeline アセットは、自動的に Playable Director にアサインされる
- 手動で Timeline アセットを作り、自分で Playable としてアサインすることもできる
- 以下の画像のように、既に一つトラックがあるので、右クリックして削除する
- Director オブジェクトに勝手に Animator コンポーネントが追加されている場合は、これも削除してよい
- Add ボタンをクリックして、Animation トラックを追加する
- Cube を作り、原点に置く(カメラに映るようにすること)
- 作った Cube をトラックにドラッグ&ドロップする
- Create Animator On Cube という選択肢がでるのでそれを選ぶ
- これは Cube に現時点で Animator が追加されていないために出る。既に追加されている場合は出ない。
- Create Animator On Cube という選択肢がでるのでそれを選ぶ
- 再生ヘッドが 0 フレームにあることを確認して Rec ボタンを押す
- Cube オブジェクトを選び、Inspector の Transform - Rotation 上で右クリックして Add Key する
- 録画を停止する
- 再生ヘッドを適当な位置(300 フレームあたり)に移動して、もう一度再生ボタンを押す
- Cube の Transform - Rotation - Y に 360 を入力して、録画を停止する
- Timeline ウインドウで再生ヘッドをフレーム 0 に戻して、プレビュー再生ボタンをクリックする
流れとしては以下のようになる。
- アニメーションを設定したいオブジェクトを Animation Track として追加する
- キーを設定したい再生位置にヘッドを移動し、Rec を開始する
- その位置で操作したい項目に対して Add Key して値を設定する
- Rec を停止する
- ヘッドを移動 > Rec 開始(> 必要ならば Add Key)> 値を設定 > Rec 停止、を繰り返す
課題
Cube の Position と Scale をアニメーションさせ、回転しながら動いたり大きさが変わるアニメーションを作成せよ。
ヒント: Timeline ウィンドウのカーブはとても操作しにくい。トラックを右クリックして Edit In Animation Window を選ぶと、Animation ウィンドウでカーブを編集することができる。
キャラクターをアニメーションさせる
- 適当なモデル(のプレハブ)をシーンに置く
- 位置や角度を適当に修正する
- Timeline ウインドウから Add > Animation Track を選ぶ
- トラック上の None (Animator) にモデルのオブジェクトをアサインする
- 適当な Animation を Project ウインドウからトラックにドラッグ&ドロップする
- トラック上のアニメーションの再生位置や長さを調整し、プレビューを再生する
- トラックを重ねるとブレンドすることができる
- ルートモーションによりキャラクターが移動して、その後に元の位置に戻ってしまう場合は、以下のようにトラック上のアニメーションを右クリックして前のアニメーションに合わせるか、次のアニメーションに合わせるかを選ぶ
- もう一度プレビューを再生し、アニメーションが適切に再生されることを確認する
ルートモーションを使わない場合
Timeline などカットシーンではキャラクターの移動はルートモーションによって行われるのが一般的であるが、ルートモーションのないアニメーションを使っている場合などは、キャラクターのアニメーションの他に移動のアニメーションを作る必要がある。
その場合、別々のトラックに同じオブジェクトを指定して Animation Clip の再生と移動をさせることはできない(下にあるトラックのみが再生される)。同じオブジェクトに対して Animation Clip の再生と Transform のアニメーションを同時にさせるには、トラックを右クリックして Add Override Track を選び、オーバーライド トラックを作ってそこに Transform のアニメーションを設定する。
カメラを制御する
Cinemachine トラックを使うことで、Cinemachine の Virtual Camera を切り替えたり、ブレンドしながら切り替えることができる。
- Timeline ウインドウの Add ボタンをクリックして Cinemachine Track を追加する
- Cinemachine メニューから Create Virtual Camera を選ぶ
- Main Camera をトラックにアサインする
- とりあえず Virtual Camera (CM vcam1) を以下のように設定しておく
- CM vcam1 を Duplicate して名前を CM vcam2 に変更し、設定を大幅に変える
- CM vcam1 は前から撮っていたので、後ろから撮るとか、被写体との距離を近づけたり離すのもよい
- CM vcam1, CM vcam2 を Cinemachine トラックにドラッグ&ドロップする
- プレビューを再生して、カメラが滑らかに切り替わることを確認する
オブジェクトの有効・無効を制御する
- Timeline ウインドウから Add > Activation Track を選ぶ
- トラック上の None (Game Object) に対して適当な GameObject をアサインする
- シーケンス上の "Active" の範囲を変更し、プレビューを確認する
音を鳴らす
- Timeline ウインドウから Add > Audio Track を選ぶ
- 適当なオブジェクトに Audio Source を追加する
- Audio Source を追加したオブジェクトをトラックにドラッグ&ドロップする
- AudioClip アセットをトラック上にドラッグ&ドロップする
- トラック上の AudioClip の再生位置や長さを調整し、プレビューを再生する
まとめ
以下を知って理解することが重要です。
- Timeline は Windows メニューでは Sequencing に分類されている
- Timeline を作るには以下が必要である
- Playable Director コンポーネント - Timeline の再生を制御する。スクリプトから Timeline を制御する時はこのコンポーネントを操作する。
- Timeline アセット (TimelineAsset) -トラックの情報が記録されている。Playable Director にアサインして使う。
- Playable 云々という名前は、Timeline の元となっている機能に由来する
- トラックにはいくつかの種類があり、それぞれ制御できる内容が異なる
- トラックで制御できる内容は拡張できる。例えば Default Playables というアセットを追加すれば、字幕・ライト・フェードなどを簡単に制御できるトラックのタイプが追加される。
課題
今回学んだことを活用して 5~10 秒程度のカットシーンを作成せよ。