예제 #1
0
        private Vector2 UpdateSlomo(GameTime gameTime, Vector2 arenaCenter, Vector2 position)
        {
            // camera position
            if (slomoState != SlomoState.Disabled)
            {
                // mouse follow
                var mousePos    = MouseToWorld(new Vector2(Mouse.GetState().X, Mouse.GetState().Y));
                var mouseOffset = (arenaCenter - mousePos) * mouseFollowAmount;
                position -= mouseOffset;

                // zoom
                slomoZoomTween.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds);
                if (slomoZoomTween.Enabled)
                {
                    AniZoom = slomoZoomTween.CurrentValue;
                }

                slomoCameraPosTween.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds);
                if (slomoCameraPosTween.Enabled)
                {
                    var factor   = slomoCameraPosTween.CurrentValue;
                    var distance = position - arenaCenter;
                    position = arenaCenter + (distance * factor);
                }

                if (slomoState == SlomoState.Disabling && !slomoZoomTween.Enabled)
                {
                    slomoState = SlomoState.Disabled;
                }
            }

            return(position);
        }
예제 #2
0
        public void SlomoZoomOut()
        {
            slomoState = SlomoState.Disabling;
            float duration = slomoZoomTween.Enabled ?
                             slomoZoomTween.Elapsed : SlomoZoomAniDuration;

            slomoZoomTween.Animate(AniZoom, NormalZoom, duration);
            slomoCameraPosTween.Animate(1, 0, duration);
        }
예제 #3
0
        public void SlomoZoomIn()
        {
            slomoState = SlomoState.Enabled;
            float duration = SlomoZoomAniDuration;

            if (slomoZoomTween.Enabled)
            {
                duration -= slomoZoomTween.Elapsed;
            }
            slomoZoomTween.Animate(AniZoom, SlomoZoom, duration);
            slomoCameraPosTween.Animate(0, 1, duration);
        }