Esempio n. 1
0
    public override void Update(float deltaTime)
    {
        base.Update(deltaTime);

        if (m_fRestTimer > 0)
        {
            m_fRestTimer -= deltaTime;
            if (m_fRestTimer < 0)
            {
                m_fRestTimer = 0;
            }
            float t = m_fRestTimer / m_fRestTime;
            m_fPitch         = iTween.Easing(CameraDefine.m_fCameraPitchDefault, m_fOldPitch, t, iTween.EaseType.easeOutQuad);
            m_fYaw           = iTween.Easing(CameraDefine.m_fCameraYawDefault, m_fOldYaw, t, iTween.EaseType.easeOutQuad);
            m_fDistance      = iTween.Easing(CameraDefine.m_fCameraDistanceDefault, m_fOldDistance, t, iTween.EaseType.easeOutQuad);
            m_TargetOffset.y = iTween.Easing(CameraDefine.m_CameraTargetOffset.y, m_fOldTargetPffsetY, t, iTween.EaseType.easeOutQuad);
            m_bDirty         = true;
        }

        // 处理震动
        ApplyRock();

        // 摄像机动画
        ApplyAnim();

        // 摄像机旋转
        Vector3 cameraEuler = new Vector3(Pitch, Yaw, 0);

        CameraManager.Instance.MainCameraTrans.rotation = Quaternion.Euler(cameraEuler);

        if (m_State == null)
        {
            return;
        }
        m_State.UpdateCamera();

        Vector3 cameraPos = m_State.CameraPos;

        //Vector3 starePos = m_State.StarePos;
        //Vector3 cameraDir = starePos - cameraPos;



        // 不用判断,调用前判断了
        //if (CameraManager.Instance.MainCameraTrans == null) return;

        if (Singleton <CameraManager> .Instance.IsDuangCamera == true)
        {
            CameraManager.Instance.MainCameraTrans.position = Vector3.Lerp(CameraManager.Instance.MainCameraTrans.position, cameraPos, Time.deltaTime * 8.0f);
        }
        else
        {
            CameraManager.Instance.MainCameraTrans.position = cameraPos;
        }


        //CameraManager.Instance.MainCameraTrans.rotation = Quaternion.LookRotation(new Vector3(cameraDir.x, cameraDir.y, cameraDir.z));
    }