better camera zoom
This commit is contained in:
parent
8762ba3d85
commit
59bac8bb23
@ -7,19 +7,29 @@ local EPSILON = 0.001
|
|||||||
--- @field velocity Vec3
|
--- @field velocity Vec3
|
||||||
--- @field speed number
|
--- @field speed number
|
||||||
--- @field pixelsPerMeter integer
|
--- @field pixelsPerMeter integer
|
||||||
|
--- @field scale number
|
||||||
local camera = {
|
local camera = {
|
||||||
position = Vec3 {},
|
position = Vec3 {},
|
||||||
velocity = Vec3 {},
|
velocity = Vec3 {},
|
||||||
acceleration = 0.2,
|
acceleration = 0.2,
|
||||||
speed = 5,
|
speed = 5,
|
||||||
pixelsPerMeter = 24,
|
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)
|
love.wheelmoved = function(x, y)
|
||||||
if camera.scale > 50 and y > 0 then return end;
|
if camera.scale > camera:getDefaultScale() * 5 and y > 0 then return end;
|
||||||
if camera.scale < 0.005 and y < 0 then return end;
|
if camera.scale < camera:getDefaultScale() / 5 and y < 0 then return end;
|
||||||
camera.scale = camera.scale + 0.1 * y
|
camera.scale = camera.scale + (camera.scale * 0.1 * y)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@todo Отрефакторить и вынести кнопки управления в controls, не должно быть таких ужасных проверок
|
---@todo Отрефакторить и вынести кнопки управления в controls, не должно быть таких ужасных проверок
|
||||||
@ -61,9 +71,8 @@ end
|
|||||||
|
|
||||||
--- @return Camera
|
--- @return Camera
|
||||||
local function new()
|
local function new()
|
||||||
return setmetatable({}, {
|
return setmetatable({
|
||||||
__index = camera
|
}, camera)
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return { new = new }
|
return { new = new }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user