【Unity】DoTweenアニメーションをTimeLine上でPreviewする
ITimeControlを使ってDoTweenの動作をPreview出来る様にする。 Control Trackとして登録する。
目次
確認バージョン
2018.4.0f1
※参考:停止中でもTimelineでDOTweenを再生させる – Unityの備忘録的な
using UnityEngine;
using UnityEngine.Timeline;
using DG.Tweening;
/// <summary>
/// TimeLineを使った演出用基底クラス。
/// </summary>
public class BaseTimeControl : MonoBehaviour, ITimeControl
{
public Sequence m_Sequence = null;
/// <summary>
/// クリップ侵入時に呼ばれる
/// </summary>
public void OnControlTimeStart ()
{
}
/// <summary>
/// クリップ退出時
/// </summary>
public void OnControlTimeStop ()
{
}
/// <summary>
/// 変更通知が来た際に、呼ばれます。
/// Script更新時にも呼ばれます。
/// </summary>
void OnValidate()
{
SetupAction();
}
/// <summary>
/// 何度も呼ばれる
/// </summary>
public void SetTime (double _time)
{
if(m_Sequence == null)
{
return;
}
m_Sequence.Goto((float)_time);
}
/// <summary>
/// シーケンスの初期化。
/// </summary>
protected void InitSequence()
{
if(m_Sequence != null)
{
m_Sequence.Goto(0);
m_Sequence.Kill();
}
m_Sequence = DOTween.Sequence();
}
/// <summary>
/// 動作を記述してください。
/// </summary>
protected virtual void SetupAction()
{
}
}
using UnityEngine;
using UnityEngine.Timeline;
using DG.Tweening;
/// <summary>
/// TimeLineを使った演出用基底クラス。
/// </summary>
public class SampleTimeControl : BaseTimeControl
{
/// <summary>
/// パラメータ。
/// </summary>
public Vector3 ToMovePosision;
[Range(0.1f, 10.0f)]
public float ToMoveDuration = 1.0f;
public DG.Tweening.Ease EasingType = Ease.Linear;
/// <summary>
/// 演出。
/// </summary>
protected override void SetupAction()
{
InitSequence();
Sequence seq = m_Sequence;
seq.Append(transform.DOLocalMove(ToMovePosision, ToMoveDuration).SetEase(EasingType));
}
}
プレビューの逆再生も問題なく出来る。
何を行っているのか?
DG.Tweening.SequenceにはGotoという関数があって、時間を指定するとその再生位置までジャンプします。タイムラインから得られる再生位置は0~1.0の範囲であり、DG.Tweening.SequenceのGotoで設定するアニメーションの再生位置も0~1.0で指定できることから、同期を取る様にしています。