Example #1
0
 /// <summary>
 /// ����CG��ͷ�����ӿ�
 /// </summary>
 /// <param name="originalDis">ԭ�߶�</param>
 /// <param name="targetDis">Ŀ��߶�</param>
 /// <param name="orginalRx">��x����Ƕ�</param>
 /// <param name="targetRx"></param>
 /// <param name="orginalRy">��y����Ƕ�</param>
 /// <param name="targetRy"></param>
 /// <param name="originalPx">x������</param>
 /// <param name="targetPx"></param>
 /// <param name="length">ʱ�䳤�ȣ��룩</param>
 public void PlayCGAnim
     (float _originalDis, float _targetDis,
     float _orginalRx, float _targetRx,
     float _orginalRy, float _targetRy,
     float _originalPx, float _targetPx,
     float _length, Vector3 _targetPos, Transform _target = null, Action _onDone = null)
 {
     //Debug.Log("PlayCGAnim");
     m_currentAnim = new CGAnim()
     {
         originalDis = _originalDis,
         targetDis   = _targetDis,
         orginalRx   = _orginalRx,
         targetRx    = _targetRx,
         orginalRy   = _orginalRy,
         targetRy    = _targetRy,
         originalPx  = _originalPx,
         targetPx    = _targetPx,
         length      = _length,
         startTime   = Time.time,
         targetPos   = _targetPos,
         target      = _target,
         onDone      = _onDone
     };
     CurrentState = CG;
 }
Example #2
0
    private void DoPlayCGAnim()
    {
        if (m_currentAnim == null)
        {
            return;
        }
        float timeElapse = Time.time - m_currentAnim.startTime;

        if (timeElapse >= m_currentAnim.length || m_currentAnim.length == 0)
        {
            Action temp = m_currentAnim.onDone;
            CurrentState  = NONE;
            m_currentAnim = null;

            if (temp != null)
            {
                temp();
            }
            return;
        }

        transform.position = m_currentAnim.actualPos;

        float timeRate = timeElapse / m_currentAnim.length;

        float dis       = Mathf.Lerp(m_currentAnim.originalDis, m_currentAnim.targetDis, timeRate);
        float rotationX = Mathf.Lerp(m_currentAnim.orginalRx, m_currentAnim.targetRx, timeRate);
        float rotationY = Mathf.Lerp(m_currentAnim.orginalRy, m_currentAnim.targetRy, timeRate);
        float dx        = Mathf.Lerp(m_currentAnim.originalPx, m_currentAnim.targetPx, timeRate);

        transform.position -= Vector3.forward * dis;
        transform.LookAt(m_currentAnim.actualPos);
        transform.RotateAround(m_currentAnim.actualPos, new Vector3(1, 0, 0), rotationX);
        transform.RotateAround(m_currentAnim.actualPos, new Vector3(0, 1, 0), rotationY);
        transform.Translate(new Vector3(dx, 0, 0), Space.Self);
    }
Example #3
0
    private void DoPlayCGAnim()
    {
        if (m_currentAnim == null) return;
        float timeElapse = Time.time - m_currentAnim.startTime;

        if (timeElapse >= m_currentAnim.length || m_currentAnim.length == 0)
        {
            Action temp = m_currentAnim.onDone;
            CurrentState = NONE;
            m_currentAnim = null;

            if (temp != null)
            {
                temp();
            }
            return;
        }

        transform.position = m_currentAnim.actualPos;

        float timeRate = timeElapse / m_currentAnim.length;

        float dis = Mathf.Lerp(m_currentAnim.originalDis, m_currentAnim.targetDis, timeRate);
        float rotationX = Mathf.Lerp(m_currentAnim.orginalRx, m_currentAnim.targetRx, timeRate);
        float rotationY = Mathf.Lerp(m_currentAnim.orginalRy, m_currentAnim.targetRy, timeRate);
        float dx = Mathf.Lerp(m_currentAnim.originalPx, m_currentAnim.targetPx, timeRate);

        transform.position -= Vector3.forward * dis;
        transform.LookAt(m_currentAnim.actualPos);
        transform.RotateAround(m_currentAnim.actualPos, new Vector3(1, 0, 0), rotationX);
        transform.RotateAround(m_currentAnim.actualPos, new Vector3(0, 1, 0), rotationY);
        transform.Translate(new Vector3(dx, 0, 0), Space.Self);
    }
Example #4
0
 /// <summary>
 /// 剧情CG镜头动画接口
 /// </summary>
 /// <param name="originalDis">原高度</param>
 /// <param name="targetDis">目标高度</param>
 /// <param name="orginalRx">绕x方向角度</param>
 /// <param name="targetRx"></param>
 /// <param name="orginalRy">绕y方向角度</param>
 /// <param name="targetRy"></param>
 /// <param name="originalPx">x轴坐标</param>
 /// <param name="targetPx"></param>
 /// <param name="length">时间长度(秒)</param>
 public void PlayCGAnim
     (float _originalDis, float _targetDis,
      float _orginalRx, float _targetRx,
      float _orginalRy, float _targetRy,
     float _originalPx, float _targetPx,
     float _length, Vector3 _targetPos, Transform _target = null, Action _onDone = null)
 {
     Mogo.Util.LoggerHelper.Debug("PlayCGAnim");
     m_currentAnim = new CGAnim()
     {
         originalDis = _originalDis,
         targetDis = _targetDis,
         orginalRx = _orginalRx,
         targetRx = _targetRx,
         orginalRy = _orginalRy,
         targetRy = _targetRy,
         originalPx = _originalPx,
         targetPx = _targetPx,
         length = _length,
         startTime = Time.time,
         targetPos = _targetPos,
         target = _target,
         onDone = _onDone
     };
     CurrentState = CG;
 }