4th term 4th week - dsuz/unity-game-dev1-3d-2019 GitHub Wiki

今回のテーマ

今回のテーマは Timeline です。これを使うとカットシーンを作ることができます。

今回の準備

  1. Package Manager から Cinemachine をバージョン 2.5 に、ProBuilder を 4.2.3 にそれぞれアップデートする
    • 入っていない場合は上記のバージョンをインポートする
  2. 同じく Package Manager から Unity Timeline (1.0.0) が入っていなければインポートする
  3. CutScene.unitypackage をプロジェクトにインポートする
    • 前回までのプロジェクトがある人は追加でインポートする
    • ない人は空のプロジェクトを作り、SD ユニティちゃんをインポートしてからインポートする
      • SD ユニティちゃんをインポートした時はコンパイルエラーになるため、適宜修正して下さい
  4. シーン Assets/CutScene/CutScene を開き、実行する
    • カットシーンのアニメーションが再生されれば OK です

Timeline とは

Timeline とは、各々のオブジェクトの挙動を記録しておき、それを指定したタイミングで再生できる機能を持つパッケージです。以下のような挙動を記録することができます。

  • オブジェクトの Transform の変化(位置、向き、大きさ)
  • キャラクターなどのアニメーションの再生
  • 音を鳴らす
  • オブジェクトを表示したり、消したりする
  • カメラを制御する

Window メニュー > Sequencing > Timeline を選択して Timeline ウィンドウを表示し、シーン内の Director オブジェクトを選択すると、以下のウィンドウが表示される。

以下の点に注目すること。これらは Animator, Animator Controller などと似ていることに留意すること。

  1. Timeline ウィンドウには各 トラック の情報が表示されている
  2. Director オブジェクトには Playable Director というコンポーネントが追加され、Playable に CutScene という Timeline アセットがアサインされている
    • Timeline アセットには Timeline ウィンドウに表示されているトラックと シーケンス が記録されている
  3. Playable Director コンポーネントの Play On Awake がチェックされていること
    • つまりこれを外しておけば、スクリプトから PlayableDirector.Play() を呼ぶことで再生できる

実際に作ってみる

Transform をアニメーションさせる

新しいシーンを作り(一度保存して)、基本の操作を学びます。

  1. シーン内に空の GameObject を作り、名前を Director に変える
    • 名前はなんでもよいが、Timeline の Playable Director であることを示す名前にする
  2. Director オブジェクトに Playable Director コンポーネントを追加する
  3. Window メニュー > Sequencing > Timeline を選んで Timeline ウインドウを表示する
  4. Hierarchy で Director を選んだ状態にして、Timeline ウインドウ内の Create ボタンをクリックする
    • Timeline アセットが作られるので、名前を付けて保存する
    • アセットの名前はなんでもよい
    • 作られた Timeline アセットは、自動的に Playable Director にアサインされる
    • 手動で Timeline アセットを作り、自分で Playable としてアサインすることもできる
  5. 以下の画像のように、既に一つトラックがあるので、これは右クリックして削除する
    • Director オブジェクトに勝手に Animator コンポーネントが追加されているので、これも削除してよい
  6. Add ボタンをクリックして、Animation トラックを追加する
  7. Cube を作り、原点に置く(カメラに映るようにすること)
  8. 作った Cube をトラックにドラッグ&ドロップする
    • Create Animator On Cube という選択肢がでるのでそれを選ぶ
      • これは Cube に現時点で Animator が追加されていないために出る。既に追加されている場合は出ない。
  9. 再生ヘッドが 0 フレームにあることを確認して Rec ボタンを押す
  10. Cube オブジェクトを選び、Inspector の Transform - Rotation 上で右クリックして Add Key する
  11. 録音を停止する
  12. 再生ヘッドを適当な位置(300 フレームあたり)に移動して、もう一度再生ボタンを押す
  13. Cube の Transform - Rotation - Y に 360 を入力して、録音を停止する
  14. Timeline ウインドウで再生ヘッドをフレーム 0 に戻して、プレビュー再生ボタンをクリックする

流れとしては以下のようになる。

  1. アニメーションを設定したいオブジェクトを Animation Track として追加する
  2. キーを設定したい再生位置にヘッドを移動し、Rec を開始する
  3. その位置で操作したい項目に対して Add Key して値を設定する
  4. Rec を停止する
  5. ヘッドを移動 > Rec 開始(> 必要ならば Add Key)> 値を設定 > Rec 停止、を繰り返す

課題

Cube の Position と Scale をアニメーションさせ、回転しながら動いたり大きさが変わるアニメーションを作成せよ。

ヒント: Timeline ウィンドウのカーブはとても操作しにくい。トラックを右クリックして Edit In Animation Window を選ぶと、Animation ウィンドウでカーブを編集することができる。

キャラクターをアニメーションさせる

  1. SD_unitychan_humanoid プレハブをシーンに置く
    • 位置や角度を適当に修正する
    • プレハブに追加されている各コンポーネントの Is GUI のチェックを外す
      • このチェックが入っていると、実行時に GUI が表示される
  2. Timeline ウインドウから Add > Animation Track を選ぶ
  3. トラック上の None (Animator) に SD_unitychan_humanoid オブジェクトをアサインする
  4. Animation(SD_unitychan_motion_humanoid に含まれる Standing@loop, Salute, Running@loop など)を Project ウインドウからトラックにドラッグ&ドロップする
  5. トラック上のアニメーションの再生位置や長さを調整し、プレビューを再生する
    • トラックを重ねるとブレンドすることができる
  6. プレビューを再生するとキャラクターが原点に戻ってしまう。これを解決するために以下の設定をする。
    • トラックを選んで Inspector から Track Offsets を Apply Scene Offsets を選ぶ
  7. もう一度プレビューを再生し、その場でアニメーションが再生されることを確認する

課題

キャラクターがアニメーションしながら移動するように、先の要領で Position をアニメーションさせよ。

ヒント: 別々のトラックに同じオブジェクトを指定して Animation Clip の再生と移動をさせることはできない(下にあるトラックのみが再生される)。同じオブジェクトに対して Animation Clip の再生と Transform のアニメーションを同時にさせるには、トラックを右クリックして Add Override Track を選び、オーバーライド トラックを作ってそこに Transform のアニメーションを設定する。

カメラを制御する

Cinemachine トラックを使うことで、Cinemachine の Virtual Camera を切り替えたり、ブレンドしながら切り替えることができる。

  1. Timeline ウインドウの Add ボタンをクリックして Cinemachine Track を追加する
  2. Cinemachine メニューから Create Virtual Camera を選ぶ
  3. Main Camera をトラックにアサインする
  4. とりあえず Virtual Camera (CM vcam1) を以下のように設定しておく
  5. Cinemachine トラックを右クリックして Add Cinemachie Shot を選ぶ
  6. Inspector から Virtual Camera を Create して、適当に設定する
    • Solo ボタンを活用したり、他の Virtual Camera の設定を参照するとよい
  7. もう一つ Cinemachine Shot を追加して Virtual Camera を Create し、先ほどとは別の設定をする
  8. プレビューを再生して、カメラが滑らかに切り替わることを確認する

オブジェクトの有効・無効を制御する

  1. Timeline ウインドウから Add > Activation Track を選ぶ
  2. トラック上の None (Game Object) に対して適当な GameObject をアサインする
  3. シーケンス上の "Active" の範囲を変更し、プレビューを確認する

音を鳴らす

  1. Timeline ウインドウから Add > Audio Track を選ぶ
  2. 適当なオブジェクトに Audio Source を追加する
  3. Audio Source を追加したオブジェクトをトラックにドラッグ&ドロップする
  4. AudioClip アセットをトラック上にドラッグ&ドロップする
  5. トラック上の AudioClip の再生位置や長さを調整し、プレビューを再生する

課題

今回学んだことを活用して 5秒程度のカットシーンを作成せよ。作ることができたら gif アニメーションとして Slack 上に送信せよ。

ヒント: Gyazo GIF を使って、URL を Slack に送るのが便利です。

参考