示例#1
0
        IEnumerator ApplyInfluenceRoutine()
        {
            var initialExclusiveFocusPointH = Vector3H(_targetExclusiveFocusPoint.HasValue ? _targetExclusiveFocusPoint.Value : ProCamera2D.CameraPosition);
            var initialExclusiveFocusPointV = Vector3V(_targetExclusiveFocusPoint.HasValue ? _targetExclusiveFocusPoint.Value : ProCamera2D.CameraPosition);

            // Save the current boundaries so we can enable then later again
            if (IgnoreBoundaries && ProCamera2D.UseNumericBoundaries)
            {
                ProCamera2D.UseNumericBoundaries = false;

                _boundsAnimator = new BoundariesAnimator(ProCamera2D);
                _boundsAnimator.UseTopBoundary    = ProCamera2D.UseTopBoundary;
                _boundsAnimator.TopBoundary       = ProCamera2D.TopBoundary;
                _boundsAnimator.UseBottomBoundary = ProCamera2D.UseBottomBoundary;
                _boundsAnimator.BottomBoundary    = ProCamera2D.BottomBoundary;
                _boundsAnimator.UseLeftBoundary   = ProCamera2D.UseLeftBoundary;
                _boundsAnimator.LeftBoundary      = ProCamera2D.LeftBoundary;
                _boundsAnimator.UseRightBoundary  = ProCamera2D.UseRightBoundary;
                _boundsAnimator.RightBoundary     = ProCamera2D.RightBoundary;

                ProCamera2D.MoveCameraInstantlyToPosition(VectorHV(initialExclusiveFocusPointH, initialExclusiveFocusPointV));
            }
            else if (IgnoreBoundaries && ProCamera2D.UseGeometryBoundaries)
            {
                ProCamera2D.UseGeometryBoundaries = false;
                _reenableGeometryBoundaries       = true;

                ProCamera2D.MoveCameraInstantlyToPosition(VectorHV(initialExclusiveFocusPointH, initialExclusiveFocusPointV));
            }

            // Ease in
            var waitForFixedUpdate = new WaitForFixedUpdate();
            var t = 0f;

            while (t <= 1.0f)
            {
                t += (ProCamera2D.UpdateType == UpdateType.LateUpdate ? Time.deltaTime : Time.fixedDeltaTime) / EaseInDuration;

                var targetExclusiveFocusPointH = Utils.EaseFromTo(initialExclusiveFocusPointH, Vector3H(_transform.position), t, TransitionEaseType);
                var targetExclusiveFocusPointV = Utils.EaseFromTo(initialExclusiveFocusPointV, Vector3V(_transform.position), t, TransitionEaseType);

                _targetExclusiveFocusPoint = VectorHV(targetExclusiveFocusPointH, targetExclusiveFocusPointV);

                ProCamera2D.ExclusiveTargetPosition = _targetExclusiveFocusPoint;

                yield return((ProCamera2D.UpdateType == UpdateType.FixedUpdate) ? waitForFixedUpdate : null);
            }

            // Follow this
            while (true)
            {
                ProCamera2D.ExclusiveTargetPosition = VectorHV(Vector3H(_transform.position), Vector3V(_transform.position));

                _targetExclusiveFocusPoint = ProCamera2D.ExclusiveTargetPosition.Value;

                yield return((ProCamera2D.UpdateType == UpdateType.FixedUpdate) ? waitForFixedUpdate : null);
            }
        }