From 040bc85494b86004167ae323e3b77fcf48654051 Mon Sep 17 00:00:00 2001 From: Eltrac Date: Sat, 22 Feb 2025 10:38:47 +0800 Subject: fix: unnatural movement around obstacles - predict next location based on moving direction - add UP and DOWN to Direction as aliases of TOP and BOTTOM, for moving directions instead of location --- objects/Obstacle.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'objects/Obstacle.lua') diff --git a/objects/Obstacle.lua b/objects/Obstacle.lua index fb66611..dc6a944 100644 --- a/objects/Obstacle.lua +++ b/objects/Obstacle.lua @@ -24,11 +24,17 @@ function Obstacle:getBorders() return { left, right, top, bottom } end -function Obstacle:isMet(body, currentX, currentY, dv) +function Obstacle:isMet(body, currentX, currentY, dv, dir) -- x,y should be the predicted next location of this body -- dv = speed * dt * direction - local x = currentX + dv - local y = currentY + dv + local x, y + if dir == Direction.LEFT or dir == Direction.RIGHT then + x = currentX + dv + y = currentY + elseif dir == Direction.UP or dir == Direction.DOWN then + x = currentX + y = currentY + dv + end return self.body:collide(body, self.x, self.y, x, y) end -- cgit v1.2.3