Пример #1
0
    /// <summary>
    /// Y轴移动
    /// </summary>
    /// <param name="newy">目标Y值</param>
    /// <param name="ease">移动方式</param>
    /// <param name="time">移动时间</param>
    void MoveYTo(float newy, Ease ease, float time = 0.3f)
    {
        var pos = m_ScrollObject.ScrollViewPosition;

        if (!QKMath.Equals(pos.y, newy))
        {
            StopPosYTweener();

            if (QKMath.Equals(time, 0))
            {
                Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                tmpPos.y = newy;
                m_ScrollObject.JumpTo(tmpPos);
            }
            else
            {
                m_posYTweener = DOTween.To(
                    () => m_ScrollObject.ScrollViewPosition.y,
                    (v) =>
                {
                    Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                    tmpPos.y       = v;
                    m_ScrollObject.JumpTo(tmpPos);
                },
                    newy,
                    0.3f
                    ).SetAutoKill().SetEase(ease);
            }
        }
    }
Пример #2
0
    /// <summary>
    /// 旋转角度
    /// 摄像机角度视线按照x轴旋转
    /// </summary>
    /// <param name="xRot">转动角度</param>
    /// <param name="ease">转动方式</param>
    /// <param name="time">转动时间</param>
    private void RotXTo(float xRot, Ease ease, float time = 0.3f)
    {
        var x = m_TransformMixer.MainRotationTransform.Value.eulerAngles.x;

        if (QKMath.Equals(xRot, x))
        {
            return;                         //没有旋转的必要
        }
        StopRotXTweener();

        if (QKMath.Equals(time, 0))
        {
            Vector3 tmpEuler = m_TransformMixer.MainRotationTransform.Value.eulerAngles;
            tmpEuler.x = xRot;
            m_TransformMixer.MainRotationTransform.Value = Quaternion.Euler(tmpEuler);
        }
        else
        {
            m_rotXTweener = DOTween.To(
                () => m_TransformMixer.MainRotationTransform.Value.eulerAngles.x,
                (rot_x) =>
            {
                Vector3 tmpEuler = m_TransformMixer.MainRotationTransform.Value.eulerAngles;
                tmpEuler.x       = rot_x;
                m_TransformMixer.MainRotationTransform.Value = Quaternion.Euler(tmpEuler);
            },
                xRot,
                time
                ).SetAutoKill().SetEase(ease);
        }
    }
Пример #3
0
 /// <summary>
 /// 顺滑操作Z轴位置
 /// </summary>
 /// <param name="newV">目标X值</param>
 /// <param name="ease"></param>
 /// <param name="constant">是否在执行状态下修改newV并继续操作</param>
 /// <param name="time">执行时间</param>
 void ZOffsetTo(float newV, Ease ease, bool constant = false, float time = 0.3f)
 {
     StopZOffsetTweener();
     if (QKMath.Equals(time, 0))
     {
         m_CurrZOffset = newV;
         ApplyOffset();
     }
     else
     {
         m_ZOffsetTweener = DOTween.To(
             () => m_CurrZOffset,//m_ScrollObject.ScrollViewPosition.x
             (v) =>
         {
             m_CurrZOffset = v;
             ApplyOffset();
         },
             newV,
             time
             ).SetAutoKill().SetEase(ease);
     }
 }
Пример #4
0
    /// <summary>
    /// 向目标移动
    /// </summary>
    /// <param name="newpos">目标点</param>
    /// <param name="ease">移动方式</param>
    /// <param name="constant">持续移动(上次移动未结束时继续操作)</param>
    /// <param name="time">移动时间</param>
    void MoveTo(Vector3 newpos, Ease ease, bool constant = false, float time = 0.3f)
    {
        var pos = m_ScrollObject.ScrollViewPosition;

        if (!QKMath.Equals(pos.x, newpos.x))
        {
            /*
             * if (constant && m_posXTweener != null && m_posXTweener.IsActive())//持续模式,且当前tweener仍然有效
             *   //m_posXTweener.ChangeValues(m_ScrollObject.ScrollViewPosition.x, newpos.x);
             *   m_posXTweener.ChangeEndValue(newpos.x);
             * else*/
            {
                StopPosXTweener();
                if (QKMath.Equals(time, 0))
                {
                    //m_CurrXPos = newpos.x;
                    //ApplyXPos();
                    Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                    tmpPos.x = newpos.x;
                    m_ScrollObject.JumpTo(tmpPos);
                }
                else
                {
                    m_posXTweener = DOTween.To(
                        () => m_ScrollObject.ScrollViewPosition.x,//m_ScrollObject.ScrollViewPosition.x
                        (v) =>
                    {
                        var tmp = m_ScrollObject.ScrollViewPosition;
                        tmp.x   = v;
                        m_ScrollObject.JumpTo(tmp);
                        //m_CurrXPos = v;
                        //ApplyXPos();
                    },
                        newpos.x,
                        time
                        ).SetAutoKill().SetEase(ease);
                }
            }
        }

        if (!QKMath.Equals(pos.y, newpos.y))
        {
            if (constant && m_posYTweener != null && m_posYTweener.IsActive())//持续模式,且当前tweener仍然有效
            //m_posYTweener.ChangeValues(m_ScrollObject.ScrollViewPosition.y, newpos.y);
            {
                m_posYTweener.ChangeEndValue(newpos.y, true);
            }
            else
            {
                StopPosYTweener();
                if (QKMath.Equals(time, 0))
                {
                    Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                    tmpPos.y = newpos.y;
                    m_ScrollObject.JumpTo(tmpPos);
                }
                else
                {
                    m_posYTweener = DOTween.To(
                        () => m_ScrollObject.ScrollViewPosition.y,
                        (v) =>
                    {
                        Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                        tmpPos.y       = v;
                        m_ScrollObject.JumpTo(tmpPos);
                    },
                        newpos.y,
                        0.3f
                        ).SetAutoKill().SetEase(ease);
                }
            }
        }

        if (!QKMath.Equals(pos.z, newpos.z))
        {
            if (constant && m_posZTweener != null && m_posZTweener.IsActive())//持续模式,且当前tweener仍然有效
            //m_posYTweener.ChangeValues(m_ScrollObject.ScrollViewPosition.y, newpos.y);
            {
                m_posZTweener.ChangeEndValue(newpos.z, true);
            }
            else
            {
                StopPosZTweener();

                if (QKMath.Equals(time, 0))
                {
                    Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                    tmpPos.z = newpos.z;
                    m_ScrollObject.JumpTo(tmpPos);
                }
                else
                {
                    m_posZTweener = DOTween.To(
                        () => m_ScrollObject.ScrollViewPosition.z,
                        (v) =>
                    {
                        Vector3 tmpPos = m_ScrollObject.ScrollViewPosition;
                        tmpPos.z       = v;
                        m_ScrollObject.JumpTo(tmpPos);
                    },
                        newpos.z,
                        0.3f
                        ).SetAutoKill().SetEase(ease);
                }
            }
        }
    }