protected override IEnumerator TutorialAnimation()
    {
        var wait = new WaitForSeconds(0.5f);

        while (true)
        {
            fingerRectTransform.anchoredPosition = startPoint.RectTransform.anchoredPosition;
            ChangeImage(FingerType.Up);
            fingerRectTransform.gameObject.SetActive(true);

            yield return(wait);

            ChangeImage(FingerType.Down);

            yield return(wait);

            var start    = startPoint.RectTransform.anchoredPosition;
            var end      = endPoint.RectTransform.anchoredPosition;
            var duration = KKUtilities.GetDuration(start, end, speed);

            yield return(KKUtilities.FloatLerp(duration, (t) =>
            {
                end = endPoint.RectTransform.anchoredPosition;
                fingerRectTransform.anchoredPosition = Vector3.Lerp(start, end, t);
            }, false));

            ChangeImage(FingerType.Up);

            yield return(wait);

            fingerRectTransform.gameObject.SetActive(false);
        }
    }