public void CameraFieldOfView(AnimationEvent animEvent) { ActorProp selfProp = transform.parent.GetComponent <ActorProp>(); if (null == selfProp) { return; } Actor self = selfProp.ActorLogicObj; if (self.Type != ActorType.enMain) {//不是主控角色 return; } string[] theparams = animEvent.stringParameter.Split(new char[1] { ',' }); try { CameraFOVData fovChanged = new CameraFOVData(); if (theparams.Length >= 4) { fovChanged.m_fov = float.Parse(theparams[0]); if (fovChanged.m_fov > 10) { fovChanged.m_fov = (fovChanged.m_fov / 25.0f) * GameSettings.Singleton.CameraFieldOfView; } else { fovChanged.m_fov = fovChanged.m_fov * GameSettings.Singleton.CameraFieldOfView; } fovChanged.m_currentToFovTime = float.Parse(theparams[1]); fovChanged.m_fovLoopTime = float.Parse(theparams[2]); fovChanged.m_fovGoBackTime = float.Parse(theparams[3]); fovChanged.m_startFov = GameSettings.Singleton.CameraFieldOfView; m_fovLinear = fovChanged; UpdateFov(); } } catch (System.Exception e) { Debug.LogError("CameraFieldOfView:" + animEvent.stringParameter + "======error:" + e.Message); } }
void UpdateFov() { if (m_fovLinear.m_startTime < 0.0f) { m_fovLinear.m_startTime = Time.time; } if (m_fovLinear.m_currentToFovTime > 0.0f) { float s = (Time.time - m_fovLinear.m_startTime) / m_fovLinear.m_currentToFovTime; if (s > 1.0f) { s = 1.0f; m_fovLinear.m_currentToFovTime = -1.0f; m_fovLinear.m_startTime = -1.0f; } float fov = m_fovLinear.m_startFov + s * (m_fovLinear.m_fov - m_fovLinear.m_startFov); MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = fov; } else if (m_fovLinear.m_fovLoopTime > 0.0f) { if (Time.time - m_fovLinear.m_startTime > m_fovLinear.m_fovLoopTime) { m_fovLinear.m_fovLoopTime = -1.0f; m_fovLinear.m_startTime = Time.time; } } else { float s = (Time.time - m_fovLinear.m_startTime) / m_fovLinear.m_fovGoBackTime; if (s > 1.0f) { MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = m_fovLinear.m_startFov; m_fovLinear = null; } else { float fov = m_fovLinear.m_fov + s * (m_fovLinear.m_startFov - m_fovLinear.m_fov); MainGame.Singleton.MainCamera.MainCamera.GetComponent <Camera>().fieldOfView = fov; } } }