SPARKCREATIVE Tech Blog

https://www.spark-creative.jp/

【Unity】【Timeline】タイムライン機能をつかって勝利演出を作ってみる

こんにちは!弊社でも新入社員が入ってきて全員が自分より身長が低くてほっとした森田です。
2か月ぶりの投稿になりますが、前回でも書いた通りTimelineについて書いていきます。

まずは、こちらをご覧ください。

f:id:spark-morita-yuki:20210418133449g:plain
UnityChan_CutScene1

はい。かわいい。
ただユニティちゃんがアニメーションするだけではなくカメラが回り込むの勝利演出としてのポイントです。
今回はTimelineについて解説しつつこのようなカットシーンを作っていこうと思います。


■環境構築
・Unity 2019.4.24
unity3d.com

■アセットを入手する
・ユニティちゃん 3Dモデルデータ(ver1.2.1)
「UnityChan_1_2_1.unitypackage」をダウンロードします。
unity-chan.com

■ユニティちゃん 3Dモデルデータを プロジェクトにインポートする
プロジェクトウィンドウにダウンロードした「UnityChan_1_2_1.unitypackage」をドラック&ドロップをするか、
プロジェクトウィンドウで右クリックから Import Package → Custom Package... を選択。そのあと「UnityChan_1_2_1.unitypackage」を選択します。

f:id:spark-morita-yuki:20210418140713p:plain
import unity package


UnityPackageを選択するとパッケージ内にあるアセットを選択してインポートすることができます。
今回に必要なのは、モデルデータとアニメーションデータのみです。PCの容量に不安のある方はボイスデータなどはチェックを外してください。

f:id:spark-morita-yuki:20210418141014p:plain
check Import Unity Package

パッケージをうまくインポートできると下図のようにAssetsフォルダに新しくUnityChanフォルダが作成されます。

f:id:spark-morita-yuki:20210418212312p:plain
imported package


これで準備が整いました。
早速作成していきましょう。

今回はUnityプロジェクトの新規で作成したときに生成される SampleScene を使用します。

■ユニティちゃんを SampleScene に配置する

Assets/UnityChan/Prefabs/unitychan_dynamic.prefabを シーン内に配置します。
Position、Rotationは(0,0,0)、Scale(1,1,1)に設定します。

また、デフォルトで配置されているカメラの座標はこの後アニメーションさせますが、一旦ユニティちゃんを見せるため
Positionは(0,1,2)に、Rotationは(0,180,0)に設定します。

f:id:spark-morita-yuki:20210418212712p:plain
UnityChan_Prefab

このままゲームを起動すると、顔やモーションを切り替えるUIが一緒に表示してしまうのでいらないコンポーネントは削除します。
今回必要なコンポーネントは「Animator」のみです。

また、「Animator」コンポーネント内の Controller パラメータはそのままだと 「UnityChanARPose」というのが選択されていますが、こちらも不必要のため「None」を選択します。

f:id:spark-morita-yuki:20210418213330g:plain
Animator

ここまで正しく設定すると、ユニティちゃんはTポーズ(モデルのデフォルトのポーズ)をとるようになります。

f:id:spark-morita-yuki:20210418214414p:plain
UnityChan_Tpose

■Timelineの準備をする

ここからようやくTimelineを作成していきます。
初めにTimelineアセット「Playable」を作成します。

f:id:spark-morita-yuki:20210418215314p:plain
CreateTimeline

アセット名はユニティちゃんの勝利演出を作成するということで「UnityChan_Win」にします。

次に、作成した「Playable」をシーンにて利用できるようにします。
ゲームオブジェクトを1つ新しく用意します。名前は「Director」にします。
用意したゲームオブジェクトに「Playable Director」コンポーネントを追加します。

f:id:spark-morita-yuki:20210418221358g:plain
AddDirectorComponent

追加したコンポーネントの「Playable」に先ほど用意したTimelineアセット「UnityChan_Win」を選択します。

f:id:spark-morita-yuki:20210418221502p:plain
Add_UntiyChan_WinPlayable

これでTimelineの準備は完了です。

■Timelineウィンドウを使ってユニティちゃんをアニメーションさせてみる

ここからは実際にTimelineウィンドウを使用してカットシーンを作っていきます。
Timelineウィンドウは メニューの Window から Sequencing → Timeline を選択することで開くことができます。

f:id:spark-morita-yuki:20210418222924p:plain
OpenTimelineWindow

こちらが開いたTimelineウィンドウになります。

f:id:spark-morita-yuki:20210418223116p:plain
TimelineWindow

Timelineウィンドウにユニティちゃんをドラッグ&ドロップをします。
その際にTrackを選択するのですが、ここでは「Animation Track」を使用します。

f:id:spark-morita-yuki:20210418233700g:plain
drag&drop_unitychan

「Animation Track」を用意できたら、次にアニメーションを再生するクリップを用意します。
「Animation Track」を右クリックして「Add From Animation Clip」を選択します。

f:id:spark-morita-yuki:20210418233843p:plain
Track_RightClick

「Add From Animation Clip」を選択すると、アニメーションを選択するウィンドウが出てくるので今回使用する「WIN00」を選択します。

f:id:spark-morita-yuki:20210418234620p:plain
Select_UnityChanMotion

選択すると、アニメーションを再生するクリップがTimelineウィンドウに表示されます。
クリップを一番左側(0秒から再生できるよう)に設定してゲームを起動してみましょう。

f:id:spark-morita-yuki:20210418235057g:plain
Unityちゃん_アニメーション

はい。かわいい。
ここまででも100%かわいいですが、カメラの回り込みがないので次はカメラの回り込みを作っていきます。

■回り込むカメラのアニメーションを作成する

カメラをアニメーションさせるためにユニティちゃんと同様に「Main Camera」オブジェクトをTimelineウィンドウにドラッグ&ドロップします。
※Timelineウィンドウにドラッグ&ドロップした際に「Main Camera」に Animator コンポーネントが追加されます。

先ほどユニティちゃんではすでに用意されていたアニメーションクリップを使用したのですが、カメラの動きのアニメーションクリップはありません。
そのため、作成する必要があります。

オブジェクト名の右側にある録画ボタンを押してください。

f:id:spark-morita-yuki:20210419000156p:plain
RecordButton

押すと、「Recording...」といった文字とラインが赤っぽくなります。

f:id:spark-morita-yuki:20210419000600p:plain
RecordMode

この状態の時に「Main Camera」オブジェクトの座標を動かすと インスペクターのPosition部分が 赤くなります。

f:id:spark-morita-yuki:20210419001022p:plain
Position

また、Timelineウィンドウの白い再生ヘッドの部分にキーが打たれます。

f:id:spark-morita-yuki:20210419001605p:plain
Timelineウィンドウ_Key

これはこの時間にこの座標にオブジェクトを移動するということになります。
試しに0秒に Positionを (0,1,5)に 2秒に Positionを(0,1,2) に設定してゲームを起動してみます。

f:id:spark-morita-yuki:20210419002902g:plain
CameraAnimation


カメラが動くようになりました。
これを利用して回り込むカメラを作成してみます。

・・・できました!

f:id:spark-morita-yuki:20210419010004g:plain
unitychan_animation2

最後にフェードのタイムラインを追加して…

f:id:spark-morita-yuki:20210418133449g:plain

はい!完成です!
これでユニティちゃんの勝利演出カットシーンが完成しました。
こちらのサンプルはGithubにて公開していますのでよろしければそちらをご覧ください。

次回についてはUE4で同様なものを作っていきたいと思っています。

f:id:spark-morita-yuki:20210421221537p:plain