예제 #1
0
    // Update is called once per frame
    void LateUpdate()
    {
        //Moon and sun movement

        /*
         * //calculate moon or sun position
         * _unitsPassed += PlayerCharacter.transform.position.x - _lastPlayerCharacterXPosition;
         * _lastPlayerCharacterXPosition = PlayerCharacter.transform.position.x;
         * //AddScore(Mathf.FloorToInt(_unitsPassed / 4));
         * _unitsPassed %= 4;
         *
         * float routeLength = EndPoint.transform.position.x - StartPoint.transform.position.x;
         * float routeDoneInPercents = (PlayerCharacter.transform.position.x - StartPoint.transform.position.x) / routeLength * 100;
         * //TextMeshRoute.SetText($"{routeDoneInPercents} %");
         *
         * //Note: find better solution
         * float cameraWidth = MainCamera.ViewportToWorldPoint(new Vector3(1f, 1f, MainCamera.transform.position.z)).x
         *                - MainCamera.ViewportToWorldPoint(new Vector3(0f, 1f, MainCamera.transform.position.z)).x;
         * //Debug.Log($"CameraWidth = {cameraWidth}");
         * Moon.Offset = new Vector2( cameraWidth * routeDoneInPercents / 100, 0);
         */
        if (_isNeedToRefreshCamera)
        {
            _currentRefreshTime += Time.deltaTime;
            bool isEnded = false;
            if (_currentRefreshTime >= _targetRefreshCameraTime)
            {
                _currentRefreshTime = _targetRefreshCameraTime;
                isEnded             = true;
            }
            float refreshValue = _currentRefreshTime / _targetRefreshCameraTime;
            CinemachineFramingTransposer framTransposer = VirtCamera.GetCinemachineComponent <CinemachineFramingTransposer>();
            framTransposer.m_ScreenX       = Mathf.Lerp(_currentScreenXPos, _targetScreenXPos, refreshValue);
            framTransposer.m_LookaheadTime = Mathf.Lerp(_currentLookaheadTime, _targetLookaheadTime, refreshValue);

            if (isEnded)
            {
                framTransposer.m_ScreenY = _targetScreenY;
                _currentScreenY          = _targetScreenY;

                _currentCameraStatus = _targetCameraStatus;

                _currentLookaheadTime     = _targetLookaheadTime;
                _currentRefreshCameraTime = _targetRefreshCameraTime;
                _currentScreenXPos        = _targetScreenXPos;

                _currentRefreshTime    = 0f;
                _isNeedToRefreshCamera = false;

                if (_secondChanceRequested)
                {
                    ActivateSecondChance();
                }
            }
        }
    }
예제 #2
0
 public void SetTargetCameraSettings(CameraStatusE targetStatus)
 {
     //set camera run status settings
     _targetCameraStatus = targetStatus;
     if (_targetCameraStatus == CameraStatusE.Run)
     {
         _targetLookaheadTime     = CameraSettings.LookaheadTimeRun;
         _targetRefreshCameraTime = CameraSettings.RefreshTimeRun;
         _targetScreenXPos        = CameraSettings.ScreenXPosRun;
         _targetScreenY           = CameraSettings.ScreenYRun;
     }
     else if (_targetCameraStatus == CameraStatusE.Attack)
     {
         Debug.Log(_targetLookaheadTime);
         _targetLookaheadTime = CameraSettings.LookaheadTimeAttack;
         Debug.Log(_targetLookaheadTime);
         _targetRefreshCameraTime = CameraSettings.RefreshTimeAttack;
         _targetScreenXPos        = CameraSettings.ScreenXPosAttack;
         _targetScreenY           = CameraSettings.ScreenYAttack;
     }
     else if (_targetCameraStatus == CameraStatusE.Death)
     {
         _targetLookaheadTime     = CameraSettings.LookaheadTimeDeath;
         _targetRefreshCameraTime = CameraSettings.RefreshTimeDeath;
         _targetScreenXPos        = CameraSettings.ScreenXPosDeath;
         _targetScreenY           = CameraSettings.ScreenYDeath;
     }
     else if (_targetCameraStatus == CameraStatusE.Center)
     {
         _targetLookaheadTime     = CameraSettings.LookaheadTimeCenter;
         _targetRefreshCameraTime = CameraSettings.RefreshTimeCenter;
         _targetScreenXPos        = CameraSettings.ScreenXPosCenter;
         _targetScreenY           = CameraSettings.ScreenYCenter;
     }
     _isNeedToRefreshCamera = true;
 }