From 59bac8bb2342058bba91f017aea2f96783194acd Mon Sep 17 00:00:00 2001 From: Ivan Yuriev Date: Sun, 3 Aug 2025 20:48:39 +0300 Subject: [PATCH] better camera zoom --- lib/camera.lua | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/camera.lua b/lib/camera.lua index 524e4b0..7a69072 100644 --- a/lib/camera.lua +++ b/lib/camera.lua @@ -7,19 +7,29 @@ local EPSILON = 0.001 --- @field velocity Vec3 --- @field speed number --- @field pixelsPerMeter integer +--- @field scale number local camera = { position = Vec3 {}, velocity = Vec3 {}, acceleration = 0.2, speed = 5, pixelsPerMeter = 24, - scale = 2 } +function camera:getDefaultScale() + return love.window.getDesktopDimensions() / + (self.pixelsPerMeter * 30) -- 30 meters wide regardless of the actual screen size +end + +camera.__index = camera +camera.scale = camera:getDefaultScale() + +--------------------------------------------------- + love.wheelmoved = function(x, y) - if camera.scale > 50 and y > 0 then return end; - if camera.scale < 0.005 and y < 0 then return end; - camera.scale = camera.scale + 0.1 * y + if camera.scale > camera:getDefaultScale() * 5 and y > 0 then return end; + if camera.scale < camera:getDefaultScale() / 5 and y < 0 then return end; + camera.scale = camera.scale + (camera.scale * 0.1 * y) end ---@todo Отрефакторить и вынести кнопки управления в controls, не должно быть таких ужасных проверок @@ -61,9 +71,8 @@ end --- @return Camera local function new() - return setmetatable({}, { - __index = camera - }) + return setmetatable({ + }, camera) end return { new = new }