masa's blog

Masa's Gamesの開発ブログ

【Unity】DOTweenでシーク的なことをする


概要

DOTweenはUnityで簡単にアニメーションを作れるアセットです。
DOTweenのアニメーションに対して、YouTubeのシークバーのようにプレイヤーが再生位置を調整できるようにしたい場面があったので、その実装方法について書いていきます。

方法

GoToメゾットを使えば、時刻(秒)で再生位置を指定できます。
ここでは、Sliderをシークバーにして、EventTriggerもアタッチしてマウスを離したタイミングで再びPlayされるようにしています。

ソースコード

using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class SeekSample : MonoBehaviour
{
    public Transform cube;
    public Slider slider;

    private Sequence sequence;

    void Start()
    {
        //適当なアニメーションを作成
        sequence = DOTween.Sequence()
            .Append(cube.DOShakeRotation(3.0f))
            .Join(cube.DOJump(cube.position, 2.0f, 3.0f, 3.0f))
            .SetAutoKill(false);
    }

    void Update(){
        slider.SetValueWithoutNotify(sequence.position / sequence.Duration());
    }

    public void OnSliderValueChanged(){
        sequence.Goto(slider.value * sequence.Duration());
    }

    public void OnPointerUp(){
        sequence.Play();
    }
}

余談

以下のゲームでは、実際にこの方法を使っています。
masasgames.com