テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】動作が完結してるアニメーションを分割する

例えばジャンプアニメーション等、AssetStoreから入手したアセットのアニメーションが繋がっている事があります。

そういった時に、アニメーションを分割するアプローチについてです。

繋がっているアニメーション

ジャンプ等のアニメーションは、繋がっていない場合と繋がっている場合があります。これは単純に用途の問題で、

  • 繋がっている場合:MatchTarget等で段差を飛び越える等の、固定で動く移動
  • 分かれている場合:ジャンプモーション等に使用する

といった感じでしょう。

f:id:tsubaki_t1:20170807233650g:plain

固定移動の場合は繋がっている方が、シーケンスの制御が楽で良いのですが、ジャンプ中といった場合はそうはなりません。
オブジェクトの晒されている状況に応じて適当なアニメーションを割り当てる必要があります。
例えばジャンプアニメーションの流れは下のようなモノになると思いますが、

  1. ジャンプ開始
  2. ジャンプ上昇中
  3. ジャンプ中
  4. ジャンプ下降中
  5. 着地

アクションゲームではジャンプ開始は固定でも、ジャンプ上昇時間やジャンプ下降時間は可変である事が予想されます。

アニメーションを分割する

繋がっているアニメーションで可変するアニメーションを表現するのは面倒です。なので、単純にアニメーションを複数のAnimationClipに分割し、Mecanimのステートで制御可能にしてしまいます。

 

分割…と書きましたが、アニメーションを分割して3つのアニメーションにする等では無く、短いアニメーションを作るといった流れが正しいです。

作業の流れ

Modelを選択してAnimationImporterを開きます。

f:id:tsubaki_t1:20170807234836j:plain

後は+を押して新しいAnimationClipを生成、範囲を絞ってアニメーションの一部を取り出します。例えばJamping@loopは170.0~238.0の間のアニメーションなので、そこからジャンプ開始・ジャンプ上昇中・ジャンプ中・ジャンプ下降中・着地を取り出す訳です。

f:id:tsubaki_t1:20170807234648j:plain

f:id:tsubaki_t1:20170807235031g:plain

docs.unity3d.com

関連

tsubakit1.hateblo.jp