using Godot; using System; public partial class GobalCamera : Camera2D { public Vector2 zoomSpeed = new Vector2(0.05f, 0.05f); public float zoomMin = 0.001f; public float zoomMax = 2.0f; [Export] public float dragSensitivity = 0.35f; public override void _Input(InputEvent @event) { base._Input(@event); if (@event is InputEventMouseMotion mouseMotion && Input.IsMouseButtonPressed(MouseButton.Middle)) { Position -= mouseMotion.Relative * dragSensitivity / Zoom; } if (@event is InputEventMouseButton mouseButton) { switch (mouseButton.ButtonIndex) { case MouseButton.WheelUp: Zoom += zoomSpeed; Zoom.Clamp(zoomMin, zoomMax); break; case MouseButton.WheelDown: Zoom -= zoomSpeed; Zoom.Clamp(zoomMin, zoomMax); break; } Zoom.Clamp(zoomMin, zoomMax); } } public static Vector2 Lerp(Vector2 from, Vector2 to, float weight) => from + (to - from) * weight; }