Ejemplo n.º 1
0
        private IEnumerator SpawnLoop()
        {
            TweenerCore <Quaternion, Vector3, QuaternionOptions> rotateLoop = null;
            TweenerCore <Vector3, Vector3, VectorOptions>        scaleLoop  = null;
            var sequance = DOTween.Sequence();

            sequance.Join(transform.DOMove(_doTweenPopupSettings.GetMoveOffset() + transform.position,
                                           _doTweenPopupSettings.moveDuration).SetEase(_doTweenPopupSettings.moveCurve));

            if (Math.Abs(_doTweenPopupSettings.GetRotateOffset()) > 0.01f)
            {
                rotateLoop = transform.DOLocalRotate(
                    new Vector3(transform.localRotation.x, transform.localRotation.y,
                                -_doTweenPopupSettings.GetRotateOffset()), _doTweenPopupSettings.rotateDuration)
                             .SetEase(_doTweenPopupSettings.rotateCurve).SetLoops(-1, LoopType.Yoyo);
            }

            sequance.Join(_text.DOGradientColor(_doTweenPopupSettings.colorOverLifeTime,
                                                _doTweenPopupSettings.duration));

            sequance.Join(_text.DOGradientAlpha(_doTweenPopupSettings.colorOverLifeTime,
                                                _doTweenPopupSettings.duration));

            if (_doTweenPopupSettings.scaleOptions == ScaleOptions.ScaleBetweenTwoValue)
            {
                scaleLoop = transform.DOScale(
                    _doTweenPopupSettings.scaleOptions == ScaleOptions.Constant
                            ? _doTweenPopupSettings.GetScaleFactor().x
                            : _doTweenPopupSettings.GetScaleFactor().y, _doTweenPopupSettings.scaleDuration)
                            .SetEase(_doTweenPopupSettings.scaleCurve)
                            .SetLoops(-1, LoopType.Yoyo);
            }

            yield return(new WaitForSeconds(_doTweenPopupSettings.duration));

            rotateLoop?.Kill();
            scaleLoop?.Kill();
            sequance.Kill();
            transform.rotation = Quaternion.identity;
            ReturnToPool();
        }