環境 Unity5.4.0
複数の同じアニメーションを同期させないといけなかったのでメモ
結果
以下のコードをテキトーなスクリプトに記述して(Animatorがアタッチされている)ゲームオブジェクトにアタッチ
IEnumerator Start ()
{
Animator animator = GetComponent<Animator> ();
yield return null;
animator.SetTime (Time.time);
}
SetTime ()使うとAnimatorのローカルタイムを設定できる
ex. SetTime(5f)なら5秒アニメーションが動いた状態から動き出すようになる
SetTimeの引数にTime.timeを使うことでどのタイミングからアニメーションを動かしても同じ時間からスタートできる (アニメーションをloopさせること前提だけど)
yield return null で1フレーム待たないとSetTimeが機能しなかったのでコルーチン使ってる
応用として以下のようにSetTime ()の引数値をずらしてやれば意図的にアニメーションをずらすこともできる
public float offset;
IEnumerator Start ()
{
Animator animator = GetComponent<Animator> ();
yield return null;
animator.SetTime (Time.time + offset);
}