コード例 #1
0
        //public void OnHandleEvent(IGameNormalEventSender sender, E_GameNormalEvent e, params object[] args)
        //{
        //    if (E_GameNormalEvent.Trigger_Camera_Stock == e)
        //    {
        //        CameraStock stock = (CameraStock)args[0];
        //        m_cameraImpl.UpdateStock(stock);
        //    }
        //    else if (E_GameNormalEvent.Trigger_Camera_Zoom == e)
        //    {
        //        float Distance = (float)args[0];
        //        float Time = (float)args[1];
        //        m_cameraImpl.StartCoroutine(ZoomBlendStart(Distance, Time));
        //    }
        //    else if (E_GameNormalEvent.StartDarkChange == e)
        //        StartDarkChange();
        //    else if (E_GameNormalEvent.EndDarkChange == e)
        //        EndDarkChange();
        //}


        IEnumerator ZoomBlendStart(float distance, float time)
        {
            CameraSetting setting = m_cameraImpl.Setting;

            float deltatime = 0.0f;
            float olddis    = setting.CameraStock.Distance;
            bool  outcheck  = distance > 0.0f ? true : false;
            float newdis    = Mathf.Abs(distance);
            var   ease      = Interpolate.Ease(Interpolate.EaseType.Linear);

            while (deltatime <= time)
            {
                deltatime += TimeManager.deltaTime;
                float deltadis = ease(0.0f, newdis, deltatime, time);
                if (outcheck)
                {
                    setting.CameraStock.Distance = olddis + deltadis;
                }
                else
                {
                    setting.CameraStock.Distance = olddis - deltadis;
                }
                m_cameraImpl.UpdateStock(setting.CameraStock);
                yield return(new WaitForEndOfFrame());
            }
            setting.CameraStock.Distance = distance;
        }