Quantcast
Channel: Community | MonoGame - Latest topics
Viewing all articles
Browse latest Browse all 6821

Frame independent camera dragging

$
0
0

@martynaspikunas wrote:

I am trying to implement camera dragging functionality and smooth camera sliding that happens when player releases mouse button. My code works, but the problem is that I can't figure it out how to make it frame independent. At 60fps it works great but at unlocked frame rate camera does not move at all.

private MouseInput mouse;
        private Vector2 mouseDelta;
        private Vector2 lastMousePosition;
        private bool enableMouseDragging;
        private void UpdateMouse(GameTime gameTime)
        {
            if (mouse.IsDown(MouseButton.Middle) && !enableMouseDragging)
                enableMouseDragging = true;
            else if (!mouse.IsDown(MouseButton.Middle) && enableMouseDragging)
                enableMouseDragging = false;

            if (enableMouseDragging)
            {
                var delta = lastMousePosition - mouse.Position;
                Position += delta;

                if (delta != Vector2.Zero)
                    mouseDelta = delta;
            }
            else
            {
                if (mouseDelta != Vector2.Zero)
                {
                    Debug.WriteLine(mouseDelta);
                    Position += mouseDelta * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    mouseDelta = Vector2.LerpPrecise(mouseDelta, new Vector2(0f, 0f), 0.08f * (float)gameTime.ElapsedGameTime.TotalSeconds);
                }
            }

            lastMousePosition = mouse.Position;
        }

Someone sugested to use:

mouseDelta = Vector2.LerpPrecise(mouseDelta, new Vector2(0f, 0f), 1.0f - Mathf.Pow(Smoothing, DeltaTime));

and

if (delta != Vector2.Zero)
mouseDelta = delta / (float)gameTime.ElapsedGameTime.TotalSeconds;

But it's still not perfect.

Posts: 4

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 6821

Trending Articles