From 3373e367ac98b3409bf666770af705bd6133b73f Mon Sep 17 00:00:00 2001 From: PeaAshMeter Date: Fri, 15 Aug 2025 07:42:59 +0300 Subject: [PATCH] fix diagonal movement --- lib/character/logic.lua | 7 ++++--- main.lua | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/character/logic.lua b/lib/character/logic.lua index 1466cc0..2ac7ecc 100644 --- a/lib/character/logic.lua +++ b/lib/character/logic.lua @@ -38,10 +38,11 @@ end function logic:update(dt) if self.state == "run" and self.mapLogic.runTarget then local delta = love.timer.getTime() - self.mapLogic.t0 or love.timer.getTime() - local fraction = delta / 0.5 -- бежим одну клетку за 500 мс - if fraction >= 1 then -- анимация перемещена завершена + local fraction = delta / + (0.5 * self.mapLogic.runTarget:subtract(self.mapLogic.position):length()) -- бежим одну клетку за 500 мс, по диагонали больше + if fraction >= 1 then -- анимация перемещена завершена self.mapLogic.position = self.mapLogic.runTarget - if not self.mapLogic.path:is_empty() then -- еще есть, куда бежать + if not self.mapLogic.path:is_empty() then -- еще есть, куда бежать self:runTo(self.mapLogic.path:peek_front()) self.mapLogic.path:pop_front() else -- мы добежали до финальной цели diff --git a/main.lua b/main.lua index 22f3af7..8d29dc6 100644 --- a/main.lua +++ b/main.lua @@ -74,9 +74,9 @@ function love.draw() local mpos = Tree.level.camera:toWorldPosition(Vec3 { love.mouse.getX(), love.mouse.getY() }):floor() local path = (require "lib.pathfinder")(charPos, mpos) - love.graphics.setColor(1, 0, 0) + love.graphics.setColor(0.6, 0.75, 0.5) for p in path:values() do - love.graphics.rectangle("fill", p.x + 0.45, p.y + 0.45, 0.1, 0.1) + love.graphics.circle("fill", p.x + 0.45, p.y + 0.45, 0.1) end love.graphics.setColor(1, 1, 1) end