前回はRigidbodyの動きをTimelineに格納することで、物理演算の負荷軽減やタイミングの調整などを行いました。
今回はゲームの動きをAnimationClipとして格納しておき、Timelineで再生してみます。
- ゲームの動きを再現したい
- やり方
- 再現できるのはInspectorに出ている項目のみ
- 3Dの場合はOptimized Game Objectをしてると使えないかもしれない
- ビルド後のゲームでキャプチャは出来ない
ゲームの動きを再現したい
ゲームのチュートリアルやオープニングで、キャラクターの「本来の動き」を実際に表現したいといったケースがあるかもしれません。
例えばスーパーマリオワールドのオープニングを見ることで、ソレがどんなゲームなのかひと目で分かります。
また、してもらいたい動きを見せる事でゲームの楽しみ方を理解してもらいやすくなる効果もありそうです。
www.youtube.com他にも攻略法が分からないステージでのゴーストランナーや操作チュートリアルなど、色々と使えそうです。
また、単純にTimelineで茶番劇を作る際、動きを作るのが面倒ならキャラクターを操作し、動きをAnimationClipとして保存するといった手もあるかもしれません。
やり方
やり方は単純、昨日の内容と同じような感じです。
- 動かすキャラクター、及び動くオブジェクト郡を全てRecorderで指定します。
動くかもしれないコンポーネントを全て指定します。 - Start RecordでプレイをAnimationClipに格納します。
あとは前回同様、AnimationClipをTimelineに登録して、Recorderで指定したキャラクターをTimelineで動かします。
再現できるのはInspectorに出ている項目のみ
さて、この機能で再現できる項目ですが「Inspectorに表示されている項目のみ」という制限があります。要するに、内部で持っているパラメーターなどは再現できないという事です。
このため、「ボタンを押したら弾が出る」的なアクションの場合、「ボタンを押した」という状態をTimeline側で再現できないと、弾を出すのが難しいです。
(弾をオブジェクトプールしている場合、プーリングしてるオブジェクトをキャプチャすればOKという話もあります)
またUIの動きをキャプチャして再現する場合、「UIの動き」や「動きの結果の変化」といった項目はTimelineで再生出来ますが、フォーカスが当たった事による色のTweenといったプロパティ制御されていて表面に出てこない項目は反映されていません。
3Dの場合はOptimized Game Objectをしてると使えないかもしれない
3Dの場合ですが、Optimized Game Objectを設定していた場合、キャプチャすべきボーン情報が取れず再現出来ないかもしれません。
Optimized Game Objectを解除すればキャプチャ出来ると思います。
なおキーの数が結構凄いことになるかもしれないので、余りに長いモノは避けるか、キャプチャするフレームレートを下げるのが良いかもしれません。
ビルド後のゲームでキャプチャは出来ない
このアプローチはあくまでも「チュートリアルやシャドウラン等の動きを保存する」ものですので、例えばレーシングゲームの最速シャドウランを再現するといった用途には使えません。
そちらは「リプレイ」等のキーワードで探すのが良さそうです。