@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